diff --git a/locales/ar/LC_MESSAGES/messages.po b/locales/ar/LC_MESSAGES/messages.po index c722fcb2a..13b936424 100644 --- a/locales/ar/LC_MESSAGES/messages.po +++ b/locales/ar/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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-01-19 01:44+0000\n" "Last-Translator: Mohamed Brahimi \n" "Language-Team: Arabic `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9931,32 +9931,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9965,7 +9973,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9989,83 +9997,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10074,26 +10082,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10101,28 +10109,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10130,33 +10138,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13531,7 +13539,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13541,7 +13549,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13634,9 +13642,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16496,29 +16506,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17331,6 +17341,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17906,7 +18043,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18696,10 +18833,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18862,6 +18999,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19111,6 +19380,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19843,7 +20113,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19858,7 +20128,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19873,14 +20143,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21270,6 +21536,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21309,433 +21591,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21744,7 +22018,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21756,7 +22030,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21766,18 +22040,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21785,11 +22059,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21797,7 +22071,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21807,7 +22081,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21817,7 +22091,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21825,28 +22099,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21855,37 +22129,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21893,19 +22167,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21964,7 +22234,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22025,23 +22317,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22050,14 +22342,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22067,7 +22359,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22075,14 +22367,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22092,45 +22384,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22139,35 +22431,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22176,11 +22467,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22188,11 +22479,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22255,11 +22546,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22268,65 +22559,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22334,7 +22625,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22345,7 +22636,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22354,33 +22645,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22390,7 +22681,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22400,7 +22691,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22408,7 +22699,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22419,22 +22710,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22443,25 +22734,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22469,13 +22760,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22485,18 +22776,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22504,7 +22795,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22514,7 +22805,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22522,11 +22813,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22537,7 +22828,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22545,7 +22836,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22554,7 +22845,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22562,7 +22853,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22572,20 +22863,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22593,7 +22884,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22602,18 +22893,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22621,13 +22912,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22636,23 +22927,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22661,73 +22952,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25734,6 +26036,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/ars/LC_MESSAGES/messages.po b/locales/ars/LC_MESSAGES/messages.po index d8532f534..50edbf264 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -163,11 +163,11 @@ msgid "" "`this guide`_ before translating on Weblate." msgstr "" -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -183,22 +183,22 @@ msgid "" "original reference:" msgstr "" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " "you'll need:" msgstr "" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9925,32 +9925,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9959,7 +9967,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9983,83 +9991,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10068,26 +10076,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10095,28 +10103,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10124,33 +10132,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13525,7 +13533,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13535,7 +13543,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13628,9 +13636,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16490,29 +16500,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17325,6 +17335,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17900,7 +18037,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18690,10 +18827,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18856,6 +18993,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19105,6 +19374,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19837,7 +20107,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19852,7 +20122,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19867,14 +20137,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21264,6 +21530,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21303,433 +21585,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21738,7 +22012,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21750,7 +22024,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21760,18 +22034,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21779,11 +22053,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21791,7 +22065,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21801,7 +22075,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21811,7 +22085,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21819,28 +22093,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21849,37 +22123,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21887,19 +22161,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21958,7 +22228,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22019,23 +22311,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22044,14 +22336,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22061,7 +22353,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22069,14 +22361,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22086,45 +22378,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22133,35 +22425,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22170,11 +22461,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22182,11 +22473,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22249,11 +22540,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22262,65 +22553,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22328,7 +22619,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22339,7 +22630,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22348,33 +22639,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22384,7 +22675,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22394,7 +22685,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22402,7 +22693,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22413,22 +22704,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22437,25 +22728,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22463,13 +22754,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22479,18 +22770,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22498,7 +22789,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22508,7 +22799,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22516,11 +22807,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22531,7 +22822,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22539,7 +22830,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22548,7 +22839,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22556,7 +22847,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22566,20 +22857,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22587,7 +22878,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22596,18 +22887,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22615,13 +22906,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22630,23 +22921,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22655,73 +22946,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25728,6 +26030,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/cs/LC_MESSAGES/messages.po b/locales/cs/LC_MESSAGES/messages.po index 72f4927d2..cba257b89 100644 --- a/locales/cs/LC_MESSAGES/messages.po +++ b/locales/cs/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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-03-13 10:55+0000\n" "Last-Translator: Luky12568 \n" "Language-Team: Czech `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9935,32 +9935,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9969,7 +9977,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9993,83 +10001,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10078,26 +10086,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10105,28 +10113,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10134,33 +10142,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13535,7 +13543,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13545,7 +13553,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13638,9 +13646,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16500,29 +16510,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17335,6 +17345,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17910,7 +18047,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18700,10 +18837,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18866,6 +19003,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19115,6 +19384,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19847,7 +20117,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19862,7 +20132,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19877,14 +20147,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21274,6 +21540,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21313,433 +21595,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21748,7 +22022,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21760,7 +22034,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21770,18 +22044,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21789,11 +22063,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21801,7 +22075,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21811,7 +22085,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21821,7 +22095,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21829,28 +22103,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21859,37 +22133,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21897,19 +22171,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21968,7 +22238,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22029,23 +22321,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22054,14 +22346,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22071,7 +22363,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22079,14 +22371,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22096,45 +22388,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22143,35 +22435,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22180,11 +22471,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22192,11 +22483,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22259,11 +22550,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22272,65 +22563,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22338,7 +22629,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22349,7 +22640,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22358,33 +22649,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22394,7 +22685,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22404,7 +22695,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22412,7 +22703,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22423,22 +22714,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22447,25 +22738,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22473,13 +22764,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22489,18 +22780,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22508,7 +22799,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22518,7 +22809,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22526,11 +22817,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22541,7 +22832,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22549,7 +22840,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22558,7 +22849,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22566,7 +22857,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22576,20 +22867,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22597,7 +22888,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22606,18 +22897,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22625,13 +22916,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22640,23 +22931,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22665,73 +22956,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25738,6 +26040,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/de/LC_MESSAGES/messages.po b/locales/de/LC_MESSAGES/messages.po index bfdcccd6c..f9f1456ce 100644 --- a/locales/de/LC_MESSAGES/messages.po +++ b/locales/de/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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-04-26 13:01+0000\n" "Last-Translator: Jean-Luc Tibaux \n" "Language-Team: German `_ bevor Sie auf Weblate " "übersetzen." -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "**Übersetzen Sie den Text in der Referenz nicht direkt**" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -242,11 +242,11 @@ msgid "" msgstr "" "Richtig: Folgenden Text übersetzen und den ursprünglichen Verweis hinzufügen:" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "Den Leitfaden lokal erstellen" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " @@ -255,13 +255,13 @@ msgstr "" "Obwohl zum Mitwirken nicht unbedingt notwendig, könnte es sinnvoll sein, den " "Leitfaden lokal zu bauen, um Ihre Änderungen zu testen. Dazu brauchen Sie:" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr "" ":doc:`Nox `. Sie können nox mit ``pip`` installieren oder " "aktualisieren:" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions ` um Python 3.11 " "auf Ihrem Betriebssystem zu installieren." -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 msgid "" "To build the guide, run the following shell command in the project's root " "folder:" @@ -281,7 +281,7 @@ msgstr "" "Um den Leitfaden zu bauen, führen Sie den folgenden Shell-Befehl im " "Wurzelverzeichnis des Projektes aus:" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -293,7 +293,7 @@ msgstr "" "im Webbrowser zu betrachten, aber es wird empfohlen sie mit einem HTTP-" "Server auszuliefern." -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" @@ -301,15 +301,15 @@ msgstr "" "Der Bau-Prozess mit anschließender Auslieferung via HTTP wird über folgenden " "Befehl angestoßen:" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "Der Leitfaden ist dann über http://localhost:8000 aufrufbar." -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "Wo der Leitfaden deployt wird" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " @@ -319,11 +319,11 @@ msgstr "" "https://readthedocs.org/projects/python-packaging-user-guide/. Er wird über " "eine eigene Domain samt Frontend durch Fast.ly ausgeliefert." -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "Stil-Leitfaden" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -335,11 +335,11 @@ msgstr "" "im folgen, tragen Ihre Beiträge zu einem zusammenhängenden Ganzen bei und " "können unkomplizierter angenommen werden." -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "Zweck der Anleitung" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." @@ -348,11 +348,11 @@ msgstr "" "Veröffentlichen und Installieren von Python-Projekten mittels aktueller " "Werkzeuge dienen." -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "Geltungsbereich" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." @@ -360,7 +360,7 @@ msgstr "" "Der Leitfaden ist dazu da, Fragen zu beantworten und Probleme mit akkuraten " "und fokussierten Empfehlungen zu lösen." -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -374,23 +374,23 @@ msgstr "" "Detail, während dieser Leitfaden nur die Teile der Funktionalität von pip " "erläutert, die für das Lösen der spezifischen Aufgaben notwendig sind." -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "Zielgruppe" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "" "Die Zielgruppe des Leitfadens ist jeder, der Python über Pakete benutzt." -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " "learn about packaging just as much as you do." msgstr "Vergessen Sie nicht, dass die Python-Community groß und einladend ist." -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " @@ -400,11 +400,11 @@ msgstr "" "Programmierer verstehen. Die Zielgruppe enthält Astronomen, Maler oder " "Studenten genauso wie professionelle Software-Entwickler." -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "Sprache und Ton" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." @@ -412,7 +412,7 @@ msgstr "" "Versuchen Sie diesen Leitfaden mit einer Sprache zu schreiben, die nahbar " "und bescheiden klingt, auch wenn Sie über alles Bescheid wissen." -#: ../source/contribute.rst:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -425,7 +425,7 @@ msgstr "" "Antwort. Wie antworten Sie? *Das* ist wie Sie den Leitfaden schreiben " "sollten." -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -442,7 +442,7 @@ msgstr "" "Erlaubnis, einen Satz mit einer Präposition zu beenden, wenn das so von " "Ihnen gewünscht ist." -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -454,15 +454,15 @@ msgstr "" "einen Witz zu machen, aber wenn Sie eine wichtige Sicherheits-Empfehlung " "behandeln, sollten Sie das vielleicht lieber ganz lassen." -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "Konventionen und Mechanik" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "**Dem Leser schreiben**" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -482,11 +482,11 @@ msgstr "Richtig: Du kannst es installieren, indem.." msgid "Right: To install it, run…" msgstr "Richtig: Zum Installieren, muss …" -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "**Annahmen zur Ausgangssituation**" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -498,11 +498,11 @@ msgstr "" "Leser je sieht. Wenn Du Annahme zur Ausgangssituation machst, dann " "beschreibe diese bitte." -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "**Umfangreiches Querverweisen**" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " @@ -512,11 +512,11 @@ msgstr "" "bitte den zugehörigen Dokumentations-Abschnitt, oder alternativ ein anderes " "relevante Dokument. Bitte erspare dem Leser die Suche nach Kontext." -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "**Respektiere Namenskonventionen**" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -540,11 +540,11 @@ msgstr "Falsch: ...auf github gehostet." msgid "Right: …hosted on GitHub." msgstr "Richtig: ...auf GitHub gehostet." -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "**Nutze ein Geschlecht-neutralen Stil**" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -566,11 +566,11 @@ msgstr "Richtig: Ein Betreuer lädt die Datei hoch. Dann…" msgid "Right: A maintainer uploads the file. Then the maintainer…" msgstr "Richtig: Ein Betreuer lädt die Datei hoch. Danach macht der Betreuer…" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "**Überschriften**" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -578,7 +578,7 @@ msgid "" "might be *Install MyLibrary*." msgstr "" -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -592,11 +592,11 @@ msgstr "Falsch: Dinge, die Du über Python wissen solltest" msgid "Right: Things you should know about Python" msgstr "Richtig: Dinge, die du über Python wissen solltest" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "*Nummern**" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -2875,7 +2875,7 @@ msgid "" msgstr "" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 msgid "Versioning" msgstr "" @@ -4237,7 +4237,7 @@ msgstr "" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "" @@ -8798,9 +8798,9 @@ msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -10234,32 +10234,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -10268,7 +10276,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10292,83 +10300,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10377,26 +10385,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10404,28 +10412,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10433,33 +10441,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13834,7 +13842,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13844,7 +13852,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13937,9 +13945,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16809,29 +16819,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17648,6 +17658,134 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +#, fuzzy +msgid "Installers" +msgstr "Betreuer" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -18225,7 +18363,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -19017,10 +19155,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -19183,6 +19321,139 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +msgid "Installer semantics:" +msgstr "Betreuer" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "Specifications" @@ -19434,6 +19705,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -20173,7 +20445,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -20188,7 +20460,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -20203,14 +20475,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21603,6 +21871,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21642,434 +21926,427 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" #: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" #: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 -msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" #: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" #: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" +#: ../source/specifications/simple-repository-api.rst:121 +#, fuzzy +#| msgid "Translations" +msgid "HTML Serialization" +msgstr "Die Übersetzungen" + #: ../source/specifications/simple-repository-api.rst:125 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" #: ../source/specifications/simple-repository-api.rst:128 -msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 -msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 +#: ../source/specifications/simple-repository-api.rst:158 msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -#, fuzzy -msgid "Installers" -msgstr "Betreuer" - -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -22078,7 +22355,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -22090,7 +22367,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -22100,18 +22377,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -22119,11 +22396,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -22131,7 +22408,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -22141,7 +22418,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -22151,7 +22428,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -22159,28 +22436,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -22189,37 +22466,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -22227,19 +22504,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -22298,7 +22571,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22359,23 +22654,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22384,14 +22679,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22401,7 +22696,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22409,14 +22704,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22426,45 +22721,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22473,35 +22768,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22510,11 +22804,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22522,11 +22816,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22589,11 +22883,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22602,65 +22896,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22668,7 +22962,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22679,7 +22973,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22688,33 +22982,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22724,7 +23018,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22734,7 +23028,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22742,7 +23036,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22753,22 +23047,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22777,25 +23071,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22803,13 +23097,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22819,18 +23113,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22838,7 +23132,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22848,7 +23142,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22856,11 +23150,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22871,7 +23165,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22879,7 +23173,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22888,7 +23182,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22896,7 +23190,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22906,20 +23200,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22927,7 +23221,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22936,18 +23230,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22955,13 +23249,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22970,23 +23264,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22995,73 +23289,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -26068,6 +26373,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/eo/LC_MESSAGES/messages.po b/locales/eo/LC_MESSAGES/messages.po index a1fa9b9ff..42dc94b09 100644 --- a/locales/eo/LC_MESSAGES/messages.po +++ b/locales/eo/LC_MESSAGES/messages.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-06-29 12:03+0000\n" "Last-Translator: phlostically \n" -"Language-Team: Esperanto \n" +"Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -205,11 +205,11 @@ msgstr "" "Se vi ne bone scias la sintakson reStructuredText (RST), bonvolu legi `ĉi " "tiun gvidilon `_ antaŭ ol ektraduki ĉe Weblate." -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "**Ne traduku tekston en referenco rekte**" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -227,11 +227,11 @@ msgstr "" "Ĝuste: Traduki la jenan tekston al via propra lingvo kaj aldoni la " "originalan referencon:" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "Konstrui la gvidilon loke" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " @@ -241,11 +241,11 @@ msgstr "" "loke por elprovi viajn ŝanĝojn. Por konstrui ĉi tiun gvidilon loke, vi " "bezonos la jenon:" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr ":doc:`Nox `. Vi povas instali aŭ ĝisdatigi nox per ``pip``:" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions ` por instali Python 3.11 " "sur via mastruma sistemo." -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 msgid "" "To build the guide, run the following shell command in the project's root " "folder:" @@ -265,7 +265,7 @@ msgstr "" "Por konstrui la gvidilon, rulu la jenan konzolan komandon ĉe la radika " "dosierujo de la projekto:" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -277,7 +277,7 @@ msgstr "" "gvidilon en TTT-legilo, sed estas rekomendate servi la gvidilon per HTTP-" "servilo." -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" @@ -285,15 +285,15 @@ msgstr "" "Vi povas konstrui la gvidilon kaj servi ĝin per HTTP-servilo uzante la jenan " "komandon:" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "La gvidilo estos legebla ĉe http://localhost:8000." -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "Kie la gvidilo disponiĝas" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " @@ -303,11 +303,11 @@ msgstr "" "readthedocs.org/projects/python-packaging-user-guide/. Ĝi estas servata ĉe " "propra retadreso per Fast.ly." -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "Rekomendoj pri stilo" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -318,11 +318,11 @@ msgstr "" "vi ekverkas, bonvolu revizii ĝin. Sekvante la stilgvidilon, viaj kontribuoj " "pli koheros kaj iĝos pli akceptindaj en la projekton." -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "Celo" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." @@ -330,11 +330,11 @@ msgstr "" "La |PyPUG| celas esti la aŭtoritata dokumento pri kiel enpaki, eldoni kaj " "instali Python-projektojn per nunaj iloj." -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "Amplekso" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." @@ -342,7 +342,7 @@ msgstr "" "La gvidilo celas respondi al demandoj kaj solvi problemojn per precizaj kaj " "enfokusigitaj rekomendoj." -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -356,16 +356,16 @@ msgstr "" "gvidilo nur priskribas tiajn partojn de pip, kiaj necesas por kompletigi la " "specifajn taskojn priskribitajn en la gvidilo." -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "Legantaro" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "" "La legantoj de ĉi tiu gvidilo estas iuj ajn, kiuj uzas Python kun pakoj." -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " @@ -375,7 +375,7 @@ msgstr "" "povas havi la saman aĝon, sekson, edukon, kulturon ktp kiel vi, sed ili " "meritas lerni pakadon tiel, kiel vi." -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " @@ -385,11 +385,11 @@ msgstr "" "La legandaro de ĉi tiu gvidilo inkluzivas astronomojn, pentristojn kaj " "lernantojn kune kun profesiaj programistoj." -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "Voĉo kaj tono" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." @@ -397,7 +397,7 @@ msgstr "" "Dum verkado de tiu gvidilo, klopodu skribi kun voĉo amikeca kaj humila, eĉ " "se vi scias ĉion." -#: ../source/contribute.rst:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -409,7 +409,7 @@ msgstr "" "kaj vi scias la respondon. Kiel vi respondus? Jen *tiel* vi verku ĉi tiun " "gvidilon." -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -423,7 +423,7 @@ msgstr "" "Se tio plaĉas al vi, uzu malformalan lingvaĵon kaj ignoru trostriktajn " "gramatikajn regulojn." -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -434,15 +434,15 @@ msgstr "" "de la temo. Se vi verkas enkondukan lernilon, estas bone ŝerci, sed se vi " "diskutas gravan rekomendon pri sekureco, vi eble volas eviti ŝercojn entute." -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "Konvencioj kaj meĥaniko" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "**Verku por la leganto**" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -462,11 +462,11 @@ msgstr "Taŭga: Vi povas instali ĝin per rulado de…" msgid "Right: To install it, run…" msgstr "Taŭga: Por instali ĝin, rulu…" -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "**Klarigu supozojn**" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -477,11 +477,11 @@ msgstr "" "povas esti la unua paĝo vidata de leganto. Se vi supozas ion, do klarigu " "tiujn supozojn." -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "**Interreferencu ofte**" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " @@ -490,11 +490,11 @@ msgstr "" "La unuan fojon vi mencias ilon aŭ praktikon, ligu al la parto de la gvidilo " "pri ĝi aŭ al signifa dokumento aliloka. Ne serĉigu la leganton." -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "**Respektu nomojn**" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -518,11 +518,11 @@ msgstr "Netaŭga: …gastigata ĉe github." msgid "Right: …hosted on GitHub." msgstr "Taŭga: …gastigata ĉe GitHub." -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "**Uzu seksneŭtralan stilon**" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -543,11 +543,11 @@ msgstr "Ĝuste: Mastrumanto alŝutas la dosieron. Poste ŝ/li…" msgid "Right: A maintainer uploads the file. Then the maintainer…" msgstr "Ĝuste: Mastrumanto alŝutas la dosieron. Poste la mastrumanto…" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "**Titoloj de paragrafoj**" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -559,7 +559,7 @@ msgstr "" "scii: *Kiel mi instalu MiaBiblioteko?* Tiel, bona ebla titolo estas *Instali " "MiaBiblioteko*." -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -575,11 +575,11 @@ msgstr "Netaŭga: Sciindaĵoj Pri Python" msgid "Right: Things you should know about Python" msgstr "Taŭga: Sciindaĵoj pri Python" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "**Nombroj**" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -3301,7 +3301,7 @@ msgstr "" "dosieron :file:`__main__.py`:" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 msgid "Versioning" msgstr "Versiado" @@ -5099,7 +5099,7 @@ msgstr "Priskribo" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "Ekzemploj" @@ -10879,11 +10879,17 @@ msgstr "" "kiel konto ĉe ordinara PyPI." #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 +#, fuzzy +#| msgid "" +#| "For security reasons, you must require `manual approval `_ on each run " +#| "for the ``pypi`` environment." msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" "Pro sekureco, vi devas postuli `malaŭtomatan aprobon `_" msgstr "`ankoraŭ ne `_" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "``license``" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -12776,7 +12792,7 @@ msgstr "" "`la retejo de SPDX `_. La subtenataj versioj de la listo " "estas 3.17 aŭ pli novaj." -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `_ por pli da kunteksto. La nun evitinda formo " "estas `priskribita en PEP 621 `__." -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " @@ -12797,7 +12813,7 @@ msgstr "" "Ĝenerale, estas bone uzi norman, bone konatan licencon, kaj por eviti " "konfuziĝon, kaj ĉar kelkaj organizaĵoj evitas programon sen aprobita licenco." -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -12810,13 +12826,13 @@ msgstr "" "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:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "``license-files``" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." @@ -12824,11 +12840,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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "La patroneo devas observi la specifon:" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." @@ -12836,17 +12852,17 @@ msgstr "" "Literoj, ciferoj, substrekoj (``_``), streketoj (``-``) kaj punktoj (``.``) " "prezentas sin laŭlitere." -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "La metasignoj ``*``, ``?``, ``**`` kaj signintervaloj [] eblas." -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "Dosierloko-apartigilo devas esti la suprenstreko (``/``)." -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." @@ -12854,15 +12870,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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "Indikilo de patra dosierujo (``..``) devas esti ne uzita." -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "Ĉiu patroneo devas kongrui kun almenaŭ unu dosiero." -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." @@ -12870,13 +12886,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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." @@ -12884,13 +12900,13 @@ msgstr "" "Tio helpos la serĉilon de PyPI sugesti vian projekton, kiam oni serĉas tiujn " "ŝlosilvortojn." -#: ../source/guides/writing-pyproject-toml.rst:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "``classifiers``" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -12898,7 +12914,7 @@ msgstr "" "Listo de PyPI-klasigiloj rilataj al via projekto. Jen la `plena listo de " "klasigiloj `_." -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -12907,7 +12923,7 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " @@ -12917,13 +12933,13 @@ msgstr "" "Do Not Upload``. PyPI ĉiam malakceptas pakon de klasigilo komenciĝanta per " "``Private ::``." -#: ../source/guides/writing-pyproject-toml.rst:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." @@ -12931,7 +12947,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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -12943,7 +12959,7 @@ msgstr "" "`_ por PyPI-specifa " "pritraktado de retadresoj." -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" @@ -12953,7 +12969,7 @@ msgstr "" "``Website = \"https://example.com\"`` sed ``\"Official Website\" = \"https://" "example.com\"``." -#: ../source/guides/writing-pyproject-toml.rst:469 +#: ../source/guides/writing-pyproject-toml.rst:471 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " @@ -12963,7 +12979,7 @@ msgstr "" "retadresoj taŭge, ĉar iloj pri metadatenoj (kiel pakindeksoj) povas pli bone " "montri tiujn." -#: ../source/guides/writing-pyproject-toml.rst:473 +#: ../source/guides/writing-pyproject-toml.rst:475 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " @@ -12972,7 +12988,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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -12984,11 +13000,11 @@ msgstr "" "prezenteblaj tiel (kiel la ĉefpaĝo kaj la elŝutejo de la projekto " "respektive)." -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "Altnivelaj kromprogramoj" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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 " @@ -12998,17 +13014,17 @@ msgstr "" "Pygments_. Por krei tian kromprogramon, oni devas deklari ĝin en subtabelo " "de ``[project.entry-points]`` jene:" -#: ../source/guides/writing-pyproject-toml.rst:506 +#: ../source/guides/writing-pyproject-toml.rst:508 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:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "Plena ekzemplo" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " @@ -13017,7 +13033,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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -17249,7 +17265,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -17259,7 +17275,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -17370,9 +17386,11 @@ msgstr "Protokolo de ŝanĝoj" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "Specifado" @@ -20753,23 +20771,23 @@ msgstr "" "Jen JSON-skemo usebla por kontroli la validecon de la enhavo de ``direct_url." "json``:" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "Fonta arĥivo:" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "Git-retadreso kun etikedo kaj haketaĵo:" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "Loka dosierujo:" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "Loka dosierujo en modifebla reĝimo:" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." @@ -20777,7 +20795,7 @@ msgstr "" "Marto 2020: Ĉi tiu specifo estis aprobita per :pep:`610`, difinante la " "metadatenan dosieron ``direct_url.json``." -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -21857,6 +21875,174 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "Junio 2022: Ĉi tiu specifo estis aprobita per :pep:`668`." +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +#, fuzzy +#| msgid "This specification was originally defined in :pep:`753`." +msgid "This specification was originally defined in :pep:`592`." +msgstr "Ĉi tiu specifo estis originale difinita en :pep:`753`." + +#: ../source/specifications/file-yanking.rst:14 +#, fuzzy +#| msgid "" +#| ":pep:`740` includes changes to the HTML and JSON index APIs. These " +#| "changes are documented in the :ref:`simple-repository-api` under :ref:" +#| "`simple-repository-api-base` and :ref:`json-serialization`." +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" +":pep:`740` inkluzivas ŝanĝojn pri la indeksaj API-oj en HTML kaj JSON. Tiuj " +"ŝanĝoj estas priskribitaj en :ref:`simple-repository-api` sub :ref:`simple-" +"repository-api-base` kaj :ref:`json-serialization`." + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" +"Hiperligo en la simpla deponejo **POVAS** havi atributon ``data-yanked``, " +"kies valoro povas esti malplena aŭ esti ajna signoĉeno. La ĉeesto de " +"atributo ``data-yanked`` **ESTU** interpretata kiel indiko, ke la dosiero " +"montrata de la hiperligo estas fortirita kaj ĝenerale ne elektata de " +"instalilo krom specifaj kondiĉoj." + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" +"La valoro de la atributo ``data-yanked``, se ĝi ekzistas, estas arbitra " +"teksto pri la kialo de la fortiro. Ilo uzanta la simplan deponejan API " +"**POVAS** montri tiun tekston al uzanto." + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" +"La atributo ``yanked`` ne estas senŝanĝebla kaj povas malestiĝi (aŭ " +"reestiĝi). Tial, uzanto de API **DEVAS** povi pritrakti malfortiritan (aŭ eĉ " +"refortiritan) dosieron." + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "Instaliloj" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" +"La dezirinda sperto por uzanto estas, ke post fortiro de dosiero, kiam homo " +"rekte provas instali fortiritan dosieron, tio malsukcesas kvazaŭ la dosiero " +"estus forviŝita. Tamen, kiam homo faris tion antaŭtempe, kaj nun komputilo " +"meĥanike sekvas la originalan ordon instalante la nun fortiritan dosieron, " +"do tio funkcios kvazaŭ la dosiero ne estus fortirita." + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" +"Instalilo **DEVAS** ignori fortiritan eldonon, se iu nefortirita eldono " +"plenumas la limigojn de elektado. Instalilo **POVAS** rifuzi uzi fortiritan " +"eldonon, eĉ se tio signifas, ke la limigoj ne estas plenumeblaj. Realigo " +"**ELEKTU** regulojn observantajn la ĉi-supran intencon malhelpantan «novan» " +"dependecon al foritira eldono aŭ dosiero." + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" +"La instalilo determinu sian precizan konduton laŭ sia fasonado. Tamen, jen " +"du sugestataj manieroj:" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "Speguloj" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" +"Spegulo povas ĝenerale pritrakti fortiritajn dosierojn laŭ unu el la jenaj " +"du manieroj:" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" +"Ĝi povas simple plene ignori ilin en la simpla deponeja API, provizante " +"vidon de la deponejo nur de «aktivaj», nefortiritaj dosieroj." + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" +"Ĝi povas inkluzivi fortiritajn dosierojn kaj ankaŭ speguli la atributon " +"``data-yanked``." + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" +"Speguloj **DEVAS NE** speguli fortiritan dosieron sen spegulado de la " +"atributo ``data-yanked`` pri ĝi." + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "Patroneo ``glob``" @@ -22601,7 +22787,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:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "Rekomendoj" @@ -23574,13 +23760,21 @@ msgid "Compressed Tag Sets" msgstr "Densigitaj Etikedaroj" #: ../source/specifications/platform-compatibility-tags.rst:352 +#, fuzzy +#| msgid "" +#| "To allow for compact filenames of bdists that work with more than one " +#| "compatibility tag triple, each tag in a filename can instead be a '.'-" +#| "separated, sorted, set of tags. For example, pip, a pure-Python package " +#| "that is written to run under Python 2 and 3 with the same source code, " +#| "could distribute a bdist with the tag ``py2.py3-none-any``. The full list " +#| "of simple tags is::" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" "Por kompakta dosiernomo de duuma distribuo kongrua kun pluraj kongrueco-" "etikedaj triopoj, ĉiu etikedo en dosiernomo povas esti anstataŭe «.»-" @@ -23792,6 +23986,158 @@ msgstr "Decembro 2023: La etikedoj pri iOS estis aprobitaj per :pep:`730`." msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "Marto 2024: La etikedoj pri Android estis aprobitaj per :pep:`738`." +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +#| msgid "Project Summaries" +msgid "Project Status Markers" +msgstr "Projektaj Resumoj" + +#: ../source/specifications/project-status-markers.rst:9 +#, fuzzy +#| msgid "This specification was originally defined in :pep:`740`." +msgid "This specification was originally defined in :pep:`792`." +msgstr "Ĉi tiu specifo estis originale difinita en :pep:`740`." + +#: ../source/specifications/project-status-markers.rst:14 +#, fuzzy +#| msgid "" +#| ":pep:`740` includes changes to the HTML and JSON index APIs. These " +#| "changes are documented in the :ref:`simple-repository-api` under :ref:" +#| "`simple-repository-api-base` and :ref:`json-serialization`." +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" +":pep:`740` inkluzivas ŝanĝojn pri la indeksaj API-oj en HTML kaj JSON. Tiuj " +"ŝanĝoj estas priskribitaj en :ref:`simple-repository-api` sub :ref:`simple-" +"repository-api-base` kaj :ref:`json-serialization`." + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +#| msgid "Installation" +msgid "Installer semantics: none." +msgstr "Instalado" + +#: ../source/specifications/project-status-markers.rst:45 +#, fuzzy +#| msgid "``arch``" +msgid "``archived``" +msgstr "``arch``" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +#| msgid "Installers" +msgid "Installer semantics:" +msgstr "Instaliloj" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +#, fuzzy +#| msgid "Deprecated" +msgid "``deprecated``" +msgstr "Evitindaj" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "La normo pri ``pyproject.toml``" @@ -24047,6 +24393,7 @@ msgid "``dependency-groups``" msgstr "``dependency-groups``" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" @@ -24828,8 +25175,10 @@ msgstr "``[[packages.attestation-identities]]``" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" -msgstr "" +#, fuzzy +#| msgid ":ref:`pyproject-toml-spec`" +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr ":ref:`pyproject-toml-spec`" #: ../source/specifications/pylock-toml.rst:676 msgid "" @@ -24843,7 +25192,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -24858,16 +25207,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "``[packages.tool]``" -#: ../source/specifications/pylock-toml.rst:701 -#, fuzzy -#| msgid ":ref:`pyproject-toml-spec`" -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr ":ref:`pyproject-toml-spec`" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -26584,6 +26927,26 @@ msgid "" msgstr "" "Septembro 2020: Diversaj amendoj kaj klarigoj estis aprobitaj per :pep:`627`." +#: ../source/specifications/schemas/index.rst:4 +#, fuzzy +#| msgid "Data schema" +msgid "PyPA schemas" +msgstr "Datena skemo" + +#: ../source/specifications/schemas/index.rst:6 +#, fuzzy +#| msgid "``direct_url.json``: see :ref:`direct-url` for details" +msgid "`direct_url.json `_" +msgstr "``direct_url.json``: vidu :ref:`direct-url` por detaloj" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "Pako-Distribuaj Dosierformoj" @@ -26628,20 +26991,33 @@ msgstr "" "`2119`." #: ../source/specifications/simple-repository-api.rst:13 +#, fuzzy +#| msgid "" +#| "The interface for querying available package versions and retrieving " +#| "packages from an index server comes in two forms: HTML and JSON." msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" "La interfaco por peti informojn pri haveblaj versioj de pakoj kaj akiri " "pakojn el indeksa servilo havas du formojn: HTML kaj JSON." -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +#, fuzzy +#| msgid "Base HTML API" +msgid "Base API" msgstr "Baza HTML API" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 +#, fuzzy +#| msgid "" +#| "A repository that implements the simple API is defined by its base URL, " +#| "this is the top level URL that all additional URLs are below. The API is " +#| "named the \"simple\" repository due to the fact that PyPI's base URL is " +#| "``https://pypi.org/simple/``." msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." @@ -26651,7 +27027,7 @@ msgstr "" "nomiĝas «simpla», ĉar la baza retadreso de PyPI estas ``https://pypi.org/" "simple/``." -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" @@ -26661,13 +27037,245 @@ msgstr "" "retadreso. (Ekzemple, pri retadreso de PyPI, ``/foo/`` respondos al " "``https://pypi.org/simple/foo/``." -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" +msgstr "Normigitaj Nomoj" + +#: ../source/specifications/simple-repository-api.rst:35 +msgid "" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" +msgstr "" +"Ĉi tiu specifo referencas la koncepton de «normigita» projekta nomo. Laŭ :" +"ref:`la specifo pri normigo de nomoj `, la validaj " +"skrisbignoj en nomo estas Askiaj literoj, Asikaj ciferoj, ``.``, ``-``, kaj " +"``_``. La nomo estu minuskligita, kun sinsekvoj de ``.``, ``-``, aŭ ``_`` " +"anstataŭigitaj per unu skribsigno ``-``. Oni povas fari tion en Python per " +"la modulo ``re``::" + +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" +msgstr "Versiado de la Simpla API de PyPI" + +#: ../source/specifications/simple-repository-api.rst:52 +msgid "" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" +msgstr "Tio aspektus jene:" + +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" +msgstr "Dum interpretado de la deponeja versio:" + +#: ../source/specifications/simple-repository-api.rst:68 +msgid "" +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." +msgstr "" +"Alkremento de la maĵora versio signifas neretrokongruan ŝanĝon tian, ke " +"ekzistanta kliento supozeble ne plu povas signife uzi la API." + +#: ../source/specifications/simple-repository-api.rst:71 +msgid "" +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." +msgstr "" +"Alkremento de la minora versio signifas retrokongruan ŝanĝon tian, ke " +"ekzistantaj klientoj verŝajne povas daŭre signife uzi la API." + +#: ../source/specifications/simple-repository-api.rst:75 +msgid "" +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:81 +msgid "" +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" +"La aŭtoroj de ĉi tiu normo atendas, ke la maĵora versio neniam " +"alkrementiĝos, kaj ajna estonta grava evoluo de la API uzos alian meĥanismon " +"por API-evoluo. Tamen la maĵora versio inkluziviĝas por malambiguigi kun " +"estontaj versioj (ekz. pri hipoteza simpla API v2, kiuj ĉeestus ĉe /v2/, " +"estus konfuza, se la deponejo-versio estus ≥2)." + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" +msgstr "Versio-historio de la API" + +#: ../source/specifications/simple-repository-api.rst:91 +msgid "" +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." +msgstr "" +"Tiu sekcio enhavas nur mallongan historion de ŝanĝoj laŭ la versia numero de " +"la API. Por plena historio de ŝanĝoj inkluzive de ŝanĝoj faritaj antaŭ " +"ekstarigo de versioj de la API, vidu :ref:`la Historion `." + +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +msgstr "" +"Versio 1.0 de la API: la unua versio de la API, deklarita per :pep:`629`." + +#: ../source/specifications/simple-repository-api.rst:96 +msgid "" +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." +msgstr "" +"Versio 1.1. de la API: Aldonis la metadatenojn ``versions``, ``files[]." +"size``, kaj ``files[].upload-time`` al la JSON-seriigo, deklaritajn per :pep:" +"`700`." + +#: ../source/specifications/simple-repository-api.rst:98 +msgid "" +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." +msgstr "" +"Versio 1.2 de la API: aldonis deponejajn metadatenojn pri «spurado», " +"deklaritajn per :pep:`708`." + +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" +"Versio 1.3 de la API: aldonis metadatenojn pri originpruvo, deklaritajn per :" +"pep:`740`." + +#: ../source/specifications/simple-repository-api.rst:100 +#, fuzzy +#| msgid "" +#| "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" +"Versio 1.3 de la API: aldonis metadatenojn pri originpruvo, deklaritajn per :" +"pep:`740`." + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" +msgstr "Klientoj" + +#: ../source/specifications/simple-repository-api.rst:105 +msgid "" +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." +msgstr "" +"Kliento interaganta kun la simpla API **INSPEKTU** ĉiun respondon pri la " +"deponeja versio. Se tiu dateno mankas, la kliento **DEVAS** supozi, ke ĝi " +"estas versio 1.0." + +#: ../source/specifications/simple-repository-api.rst:109 +msgid "" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." +msgstr "" +"Renkontinte maĵoran version pli grandan ol la atenditan, kliento **DEVAS** " +"malsukcesi kun taŭga erarmesaĝo por la uzanto." + +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." +msgstr "" +"Renkontinte minoran version pli grandan ol la atenditan, kliento **AVERTU** " +"la uzanton kun taŭga mesaĝo." + +#: ../source/specifications/simple-repository-api.rst:115 +msgid "" +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." +msgstr "" +"Kliento **POVAS** daŭre uzi detektadon de funkcioj por determini la " +"funkciojn uzatajn de iu deponejo." + +#: ../source/specifications/simple-repository-api.rst:121 +#, fuzzy +#| msgid "JSON Serialization" +msgid "HTML Serialization" +msgstr "JSON-igo" + +#: ../source/specifications/simple-repository-api.rst:125 +#, fuzzy +#| msgid "" +#| "The following constraints apply to all JSON serialized responses " +#| "described in this spec:" +msgid "" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" +msgstr "" +"La sekvaj limigoj validas por ĉiuj JSON-seriigitaj respondoj priskribitaj en " +"ĉi tiu specifo:" + +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:129 +msgid "" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" +msgstr "Listo de Projektoj" + +#: ../source/specifications/simple-repository-api.rst:135 +#, fuzzy +#| msgid "" +#| "Within a repository, the root URL (``/`` for this spec which represents " +#| "the base URL) **MUST** be a valid HTML5 page with a single anchor element " +#| "per project in the repository. The text of the anchor tag **MUST** be the " +#| "name of the project and the href attribute **MUST** link to the URL for " +#| "that particular project. As an example:" msgid "" "Within a repository, the root URL (``/`` for this spec which represents the " "base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"project in the repository." +msgstr "" +"En deponejo, la radika retadreso (``/`` por ĉi tiu specifo, reprezentanta la " +"bazan retadreson) **DEVAS** esti valida HTML5-paĝo kun ankraj elementoj po " +"unu por ĉiu projekto en la deponejo. La teksto de la ankra elemento " +"**DEVAS** esti la nomo de la projekto, kaj la atributo ``href`` **DEVAS** " +"ligi al la retadreso de tiu projekto. Ekzemple:" + +#: ../source/specifications/simple-repository-api.rst:139 +#, fuzzy +#| msgid "" +#| "Within a repository, the root URL (``/`` for this spec which represents " +#| "the base URL) **MUST** be a valid HTML5 page with a single anchor element " +#| "per project in the repository. The text of the anchor tag **MUST** be the " +#| "name of the project and the href attribute **MUST** link to the URL for " +#| "that particular project. As an example:" +msgid "" +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" "En deponejo, la radika retadreso (``/`` por ĉi tiu specifo, reprezentanta la " "bazan retadreson) **DEVAS** esti valida HTML5-paĝo kun ankraj elementoj po " @@ -26675,40 +27283,62 @@ msgstr "" "**DEVAS** esti la nomo de la projekto, kaj la atributo ``href`` **DEVAS** " "ligi al la retadreso de tiu projekto. Ekzemple:" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" +msgstr "Projekta Detalo" + +#: ../source/specifications/simple-repository-api.rst:158 msgid "" "Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." -msgstr "" -"Sub la radika URL estas alia URL por ĉiu individua projekto en deponejo. La " -"formo de ĉi tiu URL estas ``//``, en kiu la ```` estas " -"anstataŭigita de la normigita nomo de la projekto; ekzemple la URL de " -"projekto nomita «SanktaGralo» estus ``/sanktagralo/``. Ĉi tiu URL devas " -"respondi per valida HTML5-paĝo kun po unu ankra elemento por ĉiu dosiero en " -"la projekto. La href-atributo **DEVAS** esti URL, kiu ligas al la loko de la " -"dosiero por elŝuto, kaj la teksto de la ankra etikedo **DEVAS** esti la sama " -"kiel la fina komponanto (la dosiernomo) de la URL. La URL **INKLUZIVU** " -"haketaĵon en la formo de URL-fragmento de la jena sintakso: " -"``#=``, en kiu ```` estas la minuskla " -"nomo de la haketfunkcio (kiel ``sha256``) kaj ```` estas la " -"deksesume kodita haketaĵo." +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." +msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:164 +msgid "" +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:167 +msgid "" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:172 +#, fuzzy +#| msgid "" +#| "The repository **SHOULD** provide the hash of the Core Metadata file as " +#| "the ``data-core-metadata`` attribute's value using the syntax " +#| "``=``, where ```` is the lower cased name " +#| "of the hash function used, and ```` is the hex encoded digest. " +#| "The repository **MAY** use ``true`` as the attribute's value if a hash is " +#| "unavailable." +msgid "" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." +msgstr "" +"La deponejo **PROVIZU** la haketaĵon de la dosiero de Kernaj Metadatenoj " +"kiel la valoron de la atributo ``data-core-metadata`` laŭ la sintakso " +"``=``, en kiu ```` " +"estas la minuskla nomo de la uzita haketaĵa funkcio kaj ```` estas la deksesume kodita valoro de la haketaĵa funkcio. La " +"deponejo **POVAS** uzi ``true`` kiel la valoron de la atributo, se haketaĵo " +"ne estas disponebla." + +#: ../source/specifications/simple-repository-api.rst:177 msgid "" "In addition to the above, the following constraints are placed on the API:" msgstr "Aldone al ĉi-supro, ekzistas la jenaj limigoj pri la API:" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" "All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " "repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " @@ -26717,20 +27347,20 @@ msgstr "" "Ĉiu URL respondanta per HTML-paĝo **DEVAS** finiĝi per ``/``. La deponejo " "**REDIREKTU** URL sen ``/`` al URL kun sufiksa ``/``." -#: ../source/specifications/simple-repository-api.rst:66 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" "URLs may be either absolute or relative as long as they point to the correct " "location." msgstr "URL povas esti aŭ absoluta aŭ relativa, se ĝi montras la ĝustan lokon." -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:186 msgid "" "There are no constraints on where the files must be hosted relative to the " "repository." msgstr "" "Ekzistas nenia limigo pri kie la dosieroj ĉeestu relative al la deponejo." -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" "There may be any other HTML elements on the API pages as long as the " "required anchor elements exist." @@ -26738,7 +27368,7 @@ msgstr "" "Povas ekzisti aliaj HTML-elementoj sur la API-paĝo, se la postulataj ankraj " "elementoj ekzistas." -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" "Repositories **MAY** redirect unnormalized URLs to the canonical normalized " "URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " @@ -26748,7 +27378,7 @@ msgstr "" "retadreso (ekz. de ``/Foobar/`` al ``/foobar/``). Tamen, kliento **DEVAS " "NE** dependi de tia redirektado kaj **DEVAS** peti la normigitan retadreson." -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" "Repositories **SHOULD** choose a hash function from one of the ones " "guaranteed to be available via the :py:mod:`hashlib` module in the Python " @@ -26760,7 +27390,7 @@ msgstr "" "``sha1``, ``sha224``, ``sha256``, ``sha384``, ``sha512``). La nuna rekomendo " "estas uzi ``sha256``." -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" "If there is a GPG signature for a particular distribution file it **MUST** " "live alongside that file with the same name with a ``.asc`` appended to it. " @@ -26774,7 +27404,7 @@ msgstr "" "subskribon, la subskribo troviĝus ĉe ``/packages/SanktaGralo-1.0.tar.gz." "asc``." -#: ../source/specifications/simple-repository-api.rst:91 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" "A repository **MAY** include a ``data-core-metadata`` attribute on a file " "link." @@ -26782,7 +27412,7 @@ msgstr "" "Deponejo **POVAS** inkluzivi atributon ``data-core-metadata`` sur dosiero-" "hiperligo." -#: ../source/specifications/simple-repository-api.rst:94 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-core-metadata`` attribute's value using the syntax " @@ -26799,7 +27429,7 @@ msgstr "" "deponejo **POVAS** uzi ``true`` kiel la valoron de la atributo, se haketaĵo " "ne estas disponebla." -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:217 msgid "" "A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " "file link." @@ -26807,7 +27437,7 @@ msgstr "" "Deponejo **POVAS** inkluzivi atributon ``data-dist-info-metadata`` sur " "dosiero-hiperligo." -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:220 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``data-core-metadata``." @@ -26815,7 +27445,7 @@ msgstr "" "Indekso-kliento **POVAS** uzi tiun ŝlosilon, se ĝi ekzistas, kiel evitindan " "sinonimon de ``data-core-metadata``." -#: ../source/specifications/simple-repository-api.rst:108 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" "``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``data-core-metadata`` with :pep:`714`." @@ -26823,7 +27453,7 @@ msgstr "" "``data-dist-info-metadata`` estis normigita per :pep:`658`, kaj ĝia nomo " "ŝanĝiĝis al ``data-core-metadata`` per :pep:`714`." -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" "A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " "with a value of either ``true`` or ``false`` to indicate whether or not " @@ -26834,7 +27464,7 @@ msgstr "" "kun valoro de aŭ ``true`` aŭ ``false`` por indiki, ĉu ekzistas GPG-" "subskribo. Deponejo faranta tion **INKLUZIVU** ĝin sur ĉiu hiperligo." -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" "A repository **MAY** include a ``data-requires-python`` attribute on a file " "link. This exposes the :ref:`core-metadata-requires-python` metadata field " @@ -26847,7 +27477,7 @@ msgstr "" "python` por la eldono. Se tiu ekzistas, instalilo **IGNORU** la elŝuton por " "instalado al Python-versio ne plenumanta la postulon. Ekzemple:" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" "In the attribute value, < and > have to be HTML encoded as ``<`` and " "``>``, respectively." @@ -26855,65 +27485,32 @@ msgstr "" "En la atributa valoro, < kaj > devas esti HTML-kodita kiel ``<`` and " "``>`` respektive." -#: ../source/specifications/simple-repository-api.rst:128 -msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." -msgstr "" -"Deponejo **POVAS** inkluzivi atributon ``data-provenance`` sur dosiera " -"hiperligo. La valoro de tiu atributo **DEVAS** esti plene kvalifikita URL, " -"asertante ke la originpruvo de la dosiero ĉeestas ĉe tiu URL. La URL " -"**DEVAS** prezenti `sekuran originon `_." - -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." -msgstr "" -"La atributo ``data-provenance`` estis aldonita por versio 1.3 de la API." - -#: ../source/specifications/simple-repository-api.rst:139 -msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." -msgstr "" -"La formo de la ligita originpruvo estas difinita en :ref:`index-hosted-" -"attestations`." - -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" -msgstr "Normigitaj Nomoj" - -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:245 +#, fuzzy +#| msgid "" +#| "A repository **MAY** include a ``data-core-metadata`` attribute on a file " +#| "link." msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -"Ĉi tiu specifo referencas la koncepton de «normigita» projekta nomo. Laŭ :" -"ref:`la specifo pri normigo de nomoj `, la validaj " -"skrisbignoj en nomo estas Askiaj literoj, Asikaj ciferoj, ``.``, ``-``, kaj " -"``_``. La nomo estu minuskligita, kun sinsekvoj de ``.``, ``-``, aŭ ``_`` " -"anstataŭigitaj per unu skribsigno ``-``. Oni povas fari tion en Python per " -"la modulo ``re``::" - -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" -msgstr "Aldoni Subtenon «Fortiri» al la Simpla API" +"Deponejo **POVAS** inkluzivi atributon ``data-core-metadata`` sur dosiero-" +"hiperligo." -#: ../source/specifications/simple-repository-api.rst:161 -msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +#: ../source/specifications/simple-repository-api.rst:247 +#, fuzzy +#| msgid "" +#| "Links in the simple repository **MAY** have a ``data-yanked`` attribute " +#| "which may have no value, or may have an arbitrary string as a value. The " +#| "presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +#| "indicating that the file pointed to by this particular link has been " +#| "\"Yanked\", and should not generally be selected by an installer, except " +#| "under specific scenarios." +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" "Hiperligo en la simpla deponejo **POVAS** havi atributon ``data-yanked``, " "kies valoro povas esti malplena aŭ esti ajna signoĉeno. La ĉeesto de " @@ -26921,284 +27518,86 @@ msgstr "" "montrata de la hiperligo estas fortirita kaj ĝenerale ne elektata de " "instalilo krom specifaj kondiĉoj." -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:253 +#, fuzzy +#| msgid "" +#| "The value of the ``data-yanked`` attribute, if present, is an arbitrary " +#| "string that represents the reason for why the file has been yanked. Tools " +#| "that process the simple repository API **MAY** surface this string to end " +#| "users." msgid "" "The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"string that represents the reason for why the file has been yanked." msgstr "" "La valoro de la atributo ``data-yanked``, se ĝi ekzistas, estas arbitra " "teksto pri la kialo de la fortiro. Ilo uzanta la simplan deponejan API " "**POVAS** montri tiun tekston al uzanto." -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." -msgstr "" -"La atributo ``yanked`` ne estas senŝanĝebla kaj povas malestiĝi (aŭ " -"reestiĝi). Tial, uzanto de API **DEVAS** povi pritrakti malfortiritan (aŭ eĉ " -"refortiritan) dosieron." - -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" -msgstr "Instaliloj" - -#: ../source/specifications/simple-repository-api.rst:182 -msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." -msgstr "" -"La dezirinda sperto por uzanto estas, ke post fortiro de dosiero, kiam homo " -"rekte provas instali fortiritan dosieron, tio malsukcesas kvazaŭ la dosiero " -"estus forviŝita. Tamen, kiam homo faris tion antaŭtempe, kaj nun komputilo " -"meĥanike sekvas la originalan ordon instalante la nun fortiritan dosieron, " -"do tio funkcios kvazaŭ la dosiero ne estus fortirita." - -#: ../source/specifications/simple-repository-api.rst:189 -msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." -msgstr "" -"Instalilo **DEVAS** ignori fortiritan eldonon, se iu nefortirita eldono " -"plenumas la limigojn de elektado. Instalilo **POVAS** rifuzi uzi fortiritan " -"eldonon, eĉ se tio signifas, ke la limigoj ne estas plenumeblaj. Realigo " -"**ELEKTU** regulojn observantajn la ĉi-supran intencon malhelpantan «novan» " -"dependecon al foritira eldono aŭ dosiero." - -#: ../source/specifications/simple-repository-api.rst:196 -msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" -msgstr "" -"La instalilo determinu sian precizan konduton laŭ sia fasonado. Tamen, jen " -"du sugestataj manieroj:" - -#: ../source/specifications/simple-repository-api.rst:200 -msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:207 -msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:213 -msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" -msgstr "Speguloj" - -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" -msgstr "" -"Spegulo povas ĝenerale pritrakti fortiritajn dosierojn laŭ unu el la jenaj " -"du manieroj:" - -#: ../source/specifications/simple-repository-api.rst:225 -msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." -msgstr "" -"Ĝi povas simple plene ignori ilin en la simpla deponeja API, provizante " -"vidon de la deponejo nur de «aktivaj», nefortiritaj dosieroj." - -#: ../source/specifications/simple-repository-api.rst:228 -msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." -msgstr "" -"Ĝi povas inkluzivi fortiritajn dosierojn kaj ankaŭ speguli la atributon " -"``data-yanked``." - -#: ../source/specifications/simple-repository-api.rst:231 -msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." -msgstr "" -"Speguloj **DEVAS NE** speguli fortiritan dosieron sen spegulado de la " -"atributo ``data-yanked`` pri ĝi." - -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" -msgstr "Versiado de la Simpla API de PyPI" - -#: ../source/specifications/simple-repository-api.rst:239 -msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" -msgstr "Tio aspektus jene:" - -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" -msgstr "Dum interpretado de la deponeja versio:" - -#: ../source/specifications/simple-repository-api.rst:255 -msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." -msgstr "" -"Alkremento de la maĵora versio signifas neretrokongruan ŝanĝon tian, ke " -"ekzistanta kliento supozeble ne plu povas signife uzi la API." - #: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -"Alkremento de la minora versio signifas retrokongruan ŝanĝon tian, ke " -"ekzistantaj klientoj verŝajne povas daŭre signife uzi la API." -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" +"Deponejo **POVAS** inkluzivi atributon ``data-provenance`` sur dosiera " +"hiperligo. La valoro de tiu atributo **DEVAS** esti plene kvalifikita URL, " +"asertante ke la originpruvo de la dosiero ĉeestas ĉe tiu URL. La URL " +"**DEVAS** prezenti `sekuran originon `_." #: ../source/specifications/simple-repository-api.rst:268 -msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." -msgstr "" -"La aŭtoroj de ĉi tiu normo atendas, ke la maĵora versio neniam " -"alkrementiĝos, kaj ajna estonta grava evoluo de la API uzos alian meĥanismon " -"por API-evoluo. Tamen la maĵora versio inkluziviĝas por malambiguigi kun " -"estontaj versioj (ekz. pri hipoteza simpla API v2, kiuj ĉeestus ĉe /v2/, " -"estus konfuza, se la deponejo-versio estus ≥2)." - -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" -msgstr "Versio-historio de la API" - -#: ../source/specifications/simple-repository-api.rst:278 -msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." -msgstr "" -"Tiu sekcio enhavas nur mallongan historion de ŝanĝoj laŭ la versia numero de " -"la API. Por plena historio de ŝanĝoj inkluzive de ŝanĝoj faritaj antaŭ " -"ekstarigo de versioj de la API, vidu :ref:`la Historion `." - -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." -msgstr "" -"Versio 1.0 de la API: la unua versio de la API, deklarita per :pep:`629`." - -#: ../source/specifications/simple-repository-api.rst:283 -msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -"Versio 1.1. de la API: Aldonis la metadatenojn ``versions``, ``files[]." -"size``, kaj ``files[].upload-time`` al la JSON-seriigo, deklaritajn per :pep:" -"`700`." +"La atributo ``data-provenance`` estis aldonita por versio 1.3 de la API." -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." -msgstr "" -"Versio 1.2 de la API: aldonis deponejajn metadatenojn pri «spurado», " -"deklaritajn per :pep:`708`." - -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -"Versio 1.3 de la API: aldonis metadatenojn pri originpruvo, deklaritajn per :" -"pep:`740`." - -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" -msgstr "Klientoj" +"La formo de la ligita originpruvo estas difinita en :ref:`index-hosted-" +"attestations`." -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -"Kliento interaganta kun la simpla API **INSPEKTU** ĉiun respondon pri la " -"deponeja versio. Se tiu dateno mankas, la kliento **DEVAS** supozi, ke ĝi " -"estas versio 1.0." -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -"Renkontinte maĵoran version pli grandan ol la atenditan, kliento **DEVAS** " -"malsukcesi kun taŭga erarmesaĝo por la uzanto." -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -"Renkontinte minoran version pli grandan ol la atenditan, kliento **AVERTU** " -"la uzanton kun taŭga mesaĝo." -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -"Kliento **POVAS** daŭre uzi detektadon de funkcioj por determini la " -"funkciojn uzatajn de iu deponejo." -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "Servi Distribuajn Metadatenojn per la Simpla Deponeja API" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -27207,7 +27606,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -27226,7 +27625,7 @@ msgstr "" "similas al la loko de la GPG-subskribo en la :ref:`baza specifo de HTML API " "`." -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -27236,11 +27635,11 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "Retrokongrueco" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " @@ -27250,7 +27649,7 @@ msgstr "" "la aktualan konduton, elŝutante la distribuon kaj inspektante la " "metadatenojn." -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -27258,11 +27657,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "JSON-baza Simpla API por Python-Pakindeksoj" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -27274,7 +27673,7 @@ msgstr "" "respondoj el :ref:`la baza normo pri HTML API ` " "estu seriigitaj laŭ `JSON `_." -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -27284,7 +27683,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -27294,7 +27693,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -27306,7 +27705,7 @@ msgstr "" "la nova normo kaŭzus, ke ekzistanta kliento ne plu povos signife kompreni la " "protokolon." -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " @@ -27316,7 +27715,7 @@ msgstr "" "al aŭ malaldonitaj el la formo, sed ekzistanta kliento supozeble daŭre " "komprenos la formon." -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " @@ -27326,7 +27725,7 @@ msgstr "" "kiuj ne aldonas aŭ forigas funkciojn, povas okazi sen ŝanĝado de la versia " "numero." -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " @@ -27336,7 +27735,7 @@ msgstr "" "aŭtoroj de verkotaj normoj ŝanĝantaj la API-on konsideru kaj decidu, ĉu " "alkrementi la maĵoran aŭ minoran version." -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -27345,7 +27744,7 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " @@ -27355,21 +27754,26 @@ msgstr "" "liverantajn datenojn, kies interpreton difinas la versio de tiuj datenoj, " "seriigitajn laŭ la cela seriigita dosierformo." -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "JSON-igo" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 +#, fuzzy +#| msgid "" +#| "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " +#| "serialization format for the already existing API." msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" "La retadresa strukturo de la :ref:`specifo de la baza HTML API ` ankoraŭ validas, ĉar ĉi tiu specifo nur provizas plian " "seriigan formon de jam ekzistanta API." -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" @@ -27377,13 +27781,13 @@ msgstr "" "La sekvaj limigoj validas por ĉiuj JSON-seriigitaj respondoj priskribitaj en " "ĉi tiu specifo:" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "Ĉiu JSON-respondo *ĉiam* estos JSON-objekto, ne tabelo aŭ alia tipo." -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -27395,7 +27799,7 @@ msgstr "" "ĝustan lokon. Relativa valoro estas relativa al la aktuala URL, same kiel " "HTML." -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." @@ -27403,7 +27807,7 @@ msgstr "" "Ekstraj ŝlosiloj povas esti aldonitaj al iuj ajn vortaraj objektoj en la API-" "respondoj. Kliento **DEVAS** ignori ŝlosilojn ne kompreneblajn." -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." @@ -27411,7 +27815,7 @@ msgstr "" "Ĉiu JSON-respondo havas ŝlosilon ``meta`` enhavantan informojn pri la " "respondo mem, ne pri la enhavo de la respondo." -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." @@ -27433,7 +27837,7 @@ msgstr "" "Ĉiuj postuloj de :ref:`la baza HTML-API-specifo ` ne specifaj al HTML estas ankoraŭ observendaj." -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." @@ -27442,11 +27846,7 @@ msgstr "" "privata uzado de indeksa servilo. Neniu estonta normo asignos signifon al " "tia ŝlosilo." -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "Listo de Projektoj" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" @@ -27454,7 +27854,7 @@ msgstr "" "La projekta radika retadreso ``/`` por ĉi tiu specifo (kiu prezentas la " "bazan retadreson) estas JSON-kodita vortaro kun du ŝlosiloj:" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." @@ -27462,8 +27862,8 @@ msgstr "" "``projects``: Listo, kies ĉiu ero estas vortaro kun ununura ŝlosilo, " "``nomo``, kies valoro estas signoĉeno de la projekta nomo." -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." @@ -27471,12 +27871,12 @@ msgstr "" "``meta``: La ĝeneralaj respondaj metadatenoj laŭ `la priskribo ĉi-supra " "`__." -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "Ekzemple:" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -27486,7 +27886,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `. Do projekto nomita " "«Ridinda_Piediro» havus la retadreson ``/ridinda-piediro/``." -#: ../source/specifications/simple-repository-api.rst:490 +#: ../source/specifications/simple-repository-api.rst:480 msgid "" "This URL must respond with a JSON encoded dictionary that has four keys:" msgstr "" "Tiu URL devas respondi per JSON-kodita vortaro enhavanta kvar ŝlosilojn:" -#: ../source/specifications/simple-repository-api.rst:492 +#: ../source/specifications/simple-repository-api.rst:482 msgid "``name``: The normalized name of the project." msgstr "``name``: La normigita nomo de la projekto." -#: ../source/specifications/simple-repository-api.rst:493 +#: ../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:495 +#: ../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." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:498 +#, fuzzy +#| msgid "The ``versions`` key was added with API version 1.1." +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:500 +msgid "" +"``project-status-reason``: If present, this **MUST** be an arbitrary string " +"description of the project status." +msgstr "" + +#: ../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." +msgstr "La ŝlosilo ``versions`` estis aldonita por versio 1.1 de la API." + +#: ../source/specifications/simple-repository-api.rst:507 msgid "" "``versions``: A list of version strings specifying all of the project " "versions uploaded for this project. The value of ``versions`` is logically a " @@ -27543,7 +27969,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:502 +#: ../source/specifications/simple-repository-api.rst:514 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 " @@ -27555,7 +27981,7 @@ msgstr "" "version sen asociita dosiero (por versio sen âlsutita dosiero, se la servilo " "subtenas tiaĵon)." -#: ../source/specifications/simple-repository-api.rst:509 +#: ../source/specifications/simple-repository-api.rst:521 msgid "" "Because servers may hold \"legacy\" data from before the adoption of :ref:" "`the version specifiers specification (VSS) `, version " @@ -27564,23 +27990,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 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:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "Ĉiu individua dosiera vortaro havas la jenajn ŝlosilojn:" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "``filename``: La dosiernomo prezentata." -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 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:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -27589,7 +28015,7 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " @@ -27599,7 +28025,7 @@ msgstr "" "dosiero. Tamen, estas **REKOMENDEGATE** inkluzivi almenaŭ unu sekuran, " "garantie haveblan haketaĵon." -#: ../source/specifications/simple-repository-api.rst:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -27609,7 +28035,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -27620,7 +28046,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:543 +#: ../source/specifications/simple-repository-api.rst:555 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " @@ -27630,7 +28056,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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -27646,7 +28072,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:554 +#: ../source/specifications/simple-repository-api.rst:566 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 " @@ -27655,7 +28081,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:558 +#: ../source/specifications/simple-repository-api.rst:570 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 " @@ -27665,7 +28091,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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." @@ -27673,14 +28099,14 @@ msgstr "" "Estas rekomendate, ke serviloj disponigu la haketaĵojn de la metadateno-" "dosiero, se tio eblas." -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 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:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." @@ -27688,7 +28114,7 @@ msgstr "" "Indekso-kliento **POVAS** uzi tiun ŝlosilon, se ĝi ekzistas, kiel evitindan " "sinonimon de ``core-metadata``." -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." @@ -27696,7 +28122,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:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -27705,18 +28131,17 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." @@ -27724,11 +28149,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:591 +#: ../source/specifications/simple-repository-api.rst:608 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:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-ddThh:mm:ss." @@ -27739,7 +28164,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:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -27753,11 +28178,11 @@ msgstr "" "ne registras alŝutan tempon de dosiero, ĝi **POVAS** preterlasi la ŝlosilon " "``upload-time``." -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 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:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -27770,11 +28195,11 @@ msgstr "" "kiel ``data-provenance`` en la :ref:`normo pri la baza HTML API `." -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 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:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -27849,11 +28274,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:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "Elektado de Versio kaj Dosierformo" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -27862,7 +28287,7 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" @@ -27880,7 +28305,7 @@ msgstr "" "Dum ĉi tiu specifo ne plene priskribas servilan enhavo-marĉandadon, la fluo " "estas proksimume jena:" -#: ../source/specifications/simple-repository-api.rst:705 +#: ../source/specifications/simple-repository-api.rst:724 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." @@ -27888,7 +28313,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:707 +#: ../source/specifications/simple-repository-api.rst:726 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 " @@ -27898,7 +28323,7 @@ msgstr "" "kaj liveras respondon de tiu enhavtipo (la manko de ĉapo ``Accept`` estas " "ekvivalenta al ``Accept: */*``)." -#: ../source/specifications/simple-repository-api.rst:710 +#: ../source/specifications/simple-repository-api.rst:729 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 " @@ -27907,7 +28332,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:714 +#: ../source/specifications/simple-repository-api.rst:733 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." @@ -27915,7 +28340,7 @@ msgstr "" "Elekti aprioran enhavtipon alian ol tiujn petitajn de la kliento kaj liveri " "tian respondon." -#: ../source/specifications/simple-repository-api.rst:716 +#: ../source/specifications/simple-repository-api.rst:735 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 " @@ -27925,7 +28350,7 @@ msgstr "" "petitaj enhavtipoj estis disponeblaj, kaj la servilo ne volis aŭ ne povis " "elekti aprioran respondan enhavtipon." -#: ../source/specifications/simple-repository-api.rst:719 +#: ../source/specifications/simple-repository-api.rst:738 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." @@ -27933,7 +28358,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:721 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." @@ -27941,7 +28366,7 @@ msgstr "" "La kliento interpretas la respondon, pritraktante tiujn diversajn specojn de " "respondoj, kiujn la servilo eble sendis." -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -27949,7 +28374,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -27960,7 +28385,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -27969,7 +28394,7 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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 " @@ -27979,19 +28404,19 @@ msgstr "" "pritrakteblaj de la kliento. Ĝu subtenas tri malsamjn formojn por ĉiu " "pripetata enhavtipo:" -#: ../source/specifications/simple-repository-api.rst:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "``$tipo/$subtipo``" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "``$tipo/*``" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "``*/*``" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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 " @@ -28001,7 +28426,7 @@ msgstr "" "$subtipo``, ĉar tio estas la sola maniero specifi la deziratajn version kaj " "dosierformon." -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -28011,7 +28436,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -28021,7 +28446,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -28031,7 +28456,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:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -28048,11 +28473,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:779 +#: ../source/specifications/simple-repository-api.rst:798 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:830 +#: ../source/specifications/simple-repository-api.rst:849 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 " @@ -28061,11 +28486,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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "Alternativaj Marĉandaj Meĥanismoj" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -28074,11 +28499,11 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "URL-Parametro" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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 " @@ -28087,7 +28512,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:851 +#: ../source/specifications/simple-repository-api.rst:870 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 " @@ -28096,7 +28521,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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -28108,7 +28533,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:860 +#: ../source/specifications/simple-repository-api.rst:879 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." @@ -28116,7 +28541,7 @@ msgstr "" "Servilo ne subtenanta tiun parametron povas raporti eraron se ĝi ĉeestas aŭ " "simple ignori ĝin." -#: ../source/specifications/simple-repository-api.rst:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -28126,11 +28551,11 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "Agordado de Finpunkto" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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 " @@ -28140,7 +28565,7 @@ msgstr "" "uzadon de enhavo-marĉandado, permesante al servilo elekti sian aprioraĵon el " "la haveblaj enhavtipoj." -#: ../source/specifications/simple-repository-api.rst:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -28150,7 +28575,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:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -28166,7 +28591,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:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -28177,11 +28602,11 @@ 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:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "Subteno de TUF – PEP 458" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -28198,7 +28623,7 @@ msgstr "" "ordinara HTTP-kliento, ĉar la TUF-kliento ne povas pritrakti la fakton, ke " "celo povas havi plurajn malsamajn prezentaojn de malsamaj haketaĵoj." -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -28209,7 +28634,7 @@ msgstr "" "postulas, ke cela dosierloko estu «dosiereca»: alivorte, dosierloko kiel " "``simple/PROJEKTO/`` ne validas, ĉar ĝi estas dosierujo." -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -28222,7 +28647,7 @@ msgstr "" "transformi al la fakta elŝutota retadreso. La samo veras por aliaj aspektoj " "de la fakta HTTP-peto kiel la ĉapo ``Accept``." -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -28230,7 +28655,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -28246,7 +28671,7 @@ msgstr "" "``simple/PROJEKTO/vnd.pypi.simple.v1.html``, dum la versio 1 de la JSON-" "formo estus ``simple/PROJEKTO/vnd.pypi.simple.v1.json``." -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " @@ -28256,7 +28681,7 @@ msgstr "" "v1+html`` dum interagado per TUF, estas pli bone normigi al la pli " "eksplicita nomo." -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." @@ -28264,7 +28689,7 @@ msgstr "" "Simile la metaversio ``latest`` ne inkluziviĝu en la celoj; nur eksplicite " "deklarita versio estu subtenata." -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -28275,7 +28700,7 @@ msgstr "" "tiun normon laŭ la opinioj de la aŭtoroj. Ĝi **ne** devige postulas tiajn " "decidojn." -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -28284,11 +28709,11 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "Ni rekomendas, ke serviloj faru la jenon:" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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 " @@ -28298,7 +28723,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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -28309,7 +28734,7 @@ msgstr "" "dosiertipon, ĝi ne liveru respondon ``300 Multiple Choice``; anstataŭe ĝi " "liveru respondon ``406 Not Acceptable``." -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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." @@ -28317,7 +28742,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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -28326,11 +28751,11 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "Ni rekomendas, ke klientoj faru la jenon:" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." @@ -28338,14 +28763,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:971 +#: ../source/specifications/simple-repository-api.rst:990 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:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -28354,7 +28779,7 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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 " @@ -28364,7 +28789,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:984 +#: ../source/specifications/simple-repository-api.rst:1003 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." @@ -28372,7 +28797,7 @@ msgstr "" "Eksplicite elektu la version serĉatan, anstataŭ uzi la metadatenan version " "``latest``, dum ordinara funkciado." -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." @@ -28380,19 +28805,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:995 +#: ../source/specifications/simple-repository-api.rst:1014 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:996 +#: ../source/specifications/simple-repository-api.rst:1015 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:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "Majo 2019: Subteno de «fortiro», en :pep:`592`" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" @@ -28400,14 +28825,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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 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:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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`" @@ -28415,7 +28840,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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" @@ -28423,7 +28848,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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" @@ -28431,7 +28856,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:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" @@ -28439,6 +28864,23 @@ msgstr "" "Novembro 2024: originpruvaj metadatenoj en la formoj HTML kaj JSON, en :pep:" "`740`" +#: ../source/specifications/simple-repository-api.rst:1028 +#, fuzzy +#| msgid "" +#| "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" +#| "`740`" +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" +"Novembro 2024: originpruvaj metadatenoj en la formoj HTML kaj JSON, en :pep:" +"`740`" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "Fonta distribua formo" @@ -32275,6 +32717,13 @@ msgstr "" "``pyproject.toml``. Malkiele, Pipenv eksplicite ne supozas, ke la " "administrata programo estas distribuebla kiel ``pip``-instalebla Python-pako." +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "Paki projektojn de Python" @@ -32990,6 +33439,41 @@ msgstr "" "komencanto pri Python-pakado, recomendate estas nur uzi *ordinarajn pakojn* " "kaj ``__init__.py`` (eĉ se tiu dosiero estas malplena)." +#, fuzzy +#~| msgid ":ref:`pyproject-toml-spec`" +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr ":ref:`pyproject-toml-spec`" + +#~ msgid "" +#~ "Below the root URL is another URL for each individual project contained " +#~ "within a repository. The format of this URL is ``//`` where the " +#~ "```` is replaced by the normalized name for that project, so a " +#~ "project named \"HolyGrail\" would have a URL like ``/holygrail/``. This " +#~ "URL must respond with a valid HTML5 page with a single anchor element per " +#~ "file for the project. The href attribute **MUST** be a URL that links to " +#~ "the location of the file for download, and the text of the anchor tag " +#~ "**MUST** match the final path component (the filename) of the URL. The " +#~ "URL **SHOULD** include a hash in the form of a URL fragment with the " +#~ "following syntax: ``#=``, where ```` is " +#~ "the lowercase name of the hash function (such as ``sha256``) and " +#~ "```` is the hex encoded digest." +#~ msgstr "" +#~ "Sub la radika URL estas alia URL por ĉiu individua projekto en deponejo. " +#~ "La formo de ĉi tiu URL estas ``//``, en kiu la ```` " +#~ "estas anstataŭigita de la normigita nomo de la projekto; ekzemple la URL " +#~ "de projekto nomita «SanktaGralo» estus ``/sanktagralo/``. Ĉi tiu URL " +#~ "devas respondi per valida HTML5-paĝo kun po unu ankra elemento por ĉiu " +#~ "dosiero en la projekto. La href-atributo **DEVAS** esti URL, kiu ligas al " +#~ "la loko de la dosiero por elŝuto, kaj la teksto de la ankra etikedo " +#~ "**DEVAS** esti la sama kiel la fina komponanto (la dosiernomo) de la URL. " +#~ "La URL **INKLUZIVU** haketaĵon en la formo de URL-fragmento de la jena " +#~ "sintakso: ``#=``, en kiu ```` estas " +#~ "la minuskla nomo de la haketfunkcio (kiel ``sha256``) kaj ```` " +#~ "estas la deksesume kodita haketaĵo." + +#~ msgid "Adding \"Yank\" Support to the Simple API" +#~ msgstr "Aldoni Subtenon «Fortiri» al la Simpla API" + #~ msgid "Signing the distribution packages" #~ msgstr "Subskribi la distribuajn pakojn" diff --git a/locales/es/LC_MESSAGES/messages.po b/locales/es/LC_MESSAGES/messages.po index 60965c6bf..b50cbbc83 100644 --- a/locales/es/LC_MESSAGES/messages.po +++ b/locales/es/LC_MESSAGES/messages.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-05-01 09:08+0000\n" "Last-Translator: Joseph Hale \n" "Language-Team: Spanish `. You can install or upgrade nox using ``pip``:" msgstr "" ":doc:`Nox `. Puedes instalar or actualizar nox usando ``pip``:" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions ` para instalar Python 3.11 " "en su sistema operativo." -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 msgid "" "To build the guide, run the following shell command in the project's root " "folder:" @@ -282,7 +282,7 @@ msgstr "" "Para construir esta guía, ejecute el siguiente comando de shell en el " "directorio raíz del proyecto:" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -294,7 +294,7 @@ msgstr "" "la guía en el navegador, pero se recomienda servir la guía usando un " "servidor HTTP." -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" @@ -302,15 +302,15 @@ msgstr "" "Puedes construir la guía y servirla vía un servidor HTTP usando el siguiente " "comando:" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "Podrá explorar la guía a través de http://localhost:8000." -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "A dónde es desplegada la guía" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " @@ -320,11 +320,11 @@ msgstr "" "https://readthedocs.org/projects/python-packaging-user-guide/. Es servida " "desde un dominio y frontend personalizado por Fast.ly." -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "Guía de estilo" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -336,11 +336,11 @@ msgstr "" "guía de estilo, sus contribuciones sumarán a un conjunto cohesivo y a " "facilitarán que tus contribuciones sean aceptadas en el proyecto." -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "Propósito" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." @@ -349,11 +349,11 @@ msgstr "" "empaquetamiento, publicación, e instalación de proyectos de Python usando " "herramientas actuales." -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "Alcance" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." @@ -361,7 +361,7 @@ msgstr "" "Esta guía pretende responder preguntas y resolver problemas con " "recomendaciones precisas y concisas." -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -375,17 +375,17 @@ msgstr "" "detalladamente, mientras que esta guía describe sólo las partes de pip que " "son necesarias para completar las tareas específicas descritas en esta guía." -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "Audiencia" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "" "La audiencia de esta guía es cualquier persona que utilice Python con " "paquetes." -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " @@ -395,7 +395,7 @@ msgstr "" "podrían no compartir su edad, su género, su formación o su cultura, pero " "tienen el mismo derecho que usted a aprender sobre el empaquetamiento." -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " @@ -406,11 +406,11 @@ msgstr "" "astrónomos y pintores y estudiantes, no solo desarrolladores profesionales " "de programas informáticos." -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "Voz y tono" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." @@ -418,7 +418,7 @@ msgstr "" "Aunque posea todas las respuestas, al escribir esta guía procure utilizar un " "tono de voz humilde y accesible." -#: ../source/contribute.rst:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -431,7 +431,7 @@ msgstr "" "usted conoce la respuesta. ¿Cómo le responde? *Así* es como usted debe " "escribir esta guía." -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -447,7 +447,7 @@ msgstr "" "presente se le concede permiso para terminar una oración con una " "preposición, si eso es con lo que desea terminarla." -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -459,15 +459,15 @@ msgstr "" "chiste, pero si está cubriendo una recomendación de seguridad delicada, " "quizá prefiera evitar por completo los chistes." -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "Convenciones y mecánicas" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "**Escriba dirigiéndose a quien lee**" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -487,11 +487,11 @@ msgstr "Correcto: Puede instalarlo ejecutando…" msgid "Right: To install it, run…" msgstr "Correcto: Para instalarlo, ejecute…" -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "**Declarar nuestras suposiciones**" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -502,11 +502,11 @@ msgstr "" "cualquier página de la guía puede ser la primer página de la guía que un " "usuario ve. Si va a hacer alguna suposición, diga qué suposiciones hará." -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "**Use referencias cruzadas extensivamente**" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " @@ -516,11 +516,11 @@ msgstr "" "la parte de la guíe que lo cubre, o un vínculo a la documentación externa " "relevante. Evite al usuario una búsqueda." -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "**Respete las prácticas al nombrar**" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -544,11 +544,11 @@ msgstr "Incorrecto: … se aloja en github." msgid "Right: …hosted on GitHub." msgstr "Correcto: … se aloja en GitHub." -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "**Utilice un estilo que no marque géneros innecesariamente**" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -569,11 +569,11 @@ msgstr "Bien: Un responsable carga un archivo. Entonces elle…" msgid "Right: A maintainer uploads the file. Then the maintainer…" msgstr "Bien: Un responsable carga un archivo. Entonces el responsable…" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "**Títulos**" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -585,7 +585,7 @@ msgstr "" "ejemplo, un lector puede querer saber *Cómo instalo MyLibrary?* así que un " "buen encabezado podría ser *Instalar MyLibrary*." -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -602,11 +602,11 @@ msgstr "Incorrecto: Cosas Que Debe Saber Acerca de Python" msgid "Right: Things you should know about Python" msgstr "Correcto: Cosas que debe saber acerca de Python" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "**Números**" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -2920,7 +2920,7 @@ msgid "" msgstr "" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 #, fuzzy msgid "Versioning" msgstr "Versión" @@ -4296,7 +4296,7 @@ msgstr "Descripción" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "Ejemplos" @@ -8895,9 +8895,9 @@ msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -10346,32 +10346,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -10380,7 +10388,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10404,84 +10412,84 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 #, fuzzy msgid "``license-files``" msgstr "Dependencias externas" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10490,26 +10498,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10517,28 +10525,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10546,33 +10554,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "Ejemplo completo" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13963,7 +13971,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13973,7 +13981,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -14067,9 +14075,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "Especificación" @@ -16962,29 +16972,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17801,6 +17811,134 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +#, fuzzy +msgid "Installers" +msgstr "Instalador" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -18379,7 +18517,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 #, fuzzy msgid "Recommendations" msgstr "Recomendaciones de herramientas" @@ -19177,10 +19315,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -19343,6 +19481,142 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +msgid "Project Status Markers" +msgstr "Nombre de proyecto" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +msgid "Installer semantics: none." +msgstr "Formato de instalación" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +msgid "Installer semantics:" +msgstr "Instalador" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +#, fuzzy +msgid "``deprecated``" +msgstr "Dependencias externas" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "Specification" @@ -19600,6 +19874,7 @@ msgid "``dependency-groups``" msgstr "Dependencias externas" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 #, fuzzy msgid "**Inspiration**: :ref:`pyproject-tool-table`" @@ -20348,8 +20623,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" -msgstr "" +#, fuzzy +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr "Nombre de proyecto" #: ../source/specifications/pylock-toml.rst:676 msgid "" @@ -20363,7 +20639,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -20378,15 +20654,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -#, fuzzy -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "Nombre de proyecto" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21799,6 +22070,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "Formatos de archivo de distribución de paquetes" @@ -21843,436 +22130,430 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +#, fuzzy +msgid "Normalized Names" +msgstr "Traducciones" + +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 -msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"In addition to the above, the following constraints are placed on the API:" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 -msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" #: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 -msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:91 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:91 +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." msgstr "" #: ../source/specifications/simple-repository-api.rst:100 -msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" #: ../source/specifications/simple-repository-api.rst:103 +#, fuzzy +msgid "Clients" +msgstr "Contenido" + +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" #: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" +#: ../source/specifications/simple-repository-api.rst:121 +#, fuzzy +msgid "HTML Serialization" +msgstr "Traducciones" + #: ../source/specifications/simple-repository-api.rst:125 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" #: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +#, fuzzy +msgid "Project List" +msgstr "Proyecto" + #: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +msgid "" +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" #: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 #, fuzzy -msgid "Normalized Names" -msgstr "Traducciones" +msgid "Project Detail" +msgstr "Nombre de proyecto" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:158 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -#, fuzzy -msgid "Installers" -msgstr "Instalador" - -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:186 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -#, fuzzy -msgid "Clients" -msgstr "Contenido" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." +msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -22281,7 +22562,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -22293,7 +22574,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -22303,19 +22584,19 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 #, fuzzy msgid "Backwards Compatibility" msgstr "Etiquetas de compatibilidad con plataformas" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -22323,11 +22604,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -22335,7 +22616,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -22345,7 +22626,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -22355,7 +22636,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -22363,28 +22644,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -22393,38 +22674,38 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 #, fuzzy msgid "JSON Serialization" msgstr "Traducciones" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -22432,19 +22713,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -#, fuzzy -msgid "Project List" -msgstr "Proyecto" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 #, fuzzy msgid "As an example:" msgstr "Por ejemplo:" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -22505,7 +22781,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22567,23 +22864,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22592,14 +22889,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22609,7 +22906,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22617,14 +22914,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22634,45 +22931,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22681,35 +22978,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22718,11 +23014,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22730,11 +23026,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22798,12 +23094,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 #, fuzzy msgid "Version + Format Selection" msgstr "Versión" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22812,65 +23108,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22878,7 +23174,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22889,7 +23185,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22898,33 +23194,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22934,7 +23230,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22944,7 +23240,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22952,7 +23248,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22963,22 +23259,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22987,25 +23283,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23013,13 +23309,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -23029,19 +23325,19 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 #, fuzzy msgid "Endpoint Configuration" msgstr "Configuraciones habituales" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23049,7 +23345,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -23059,7 +23355,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -23067,11 +23363,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -23082,7 +23378,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -23090,7 +23386,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -23099,7 +23395,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -23107,7 +23403,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -23117,20 +23413,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23138,7 +23434,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -23147,18 +23443,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -23166,13 +23462,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23181,23 +23477,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23206,73 +23502,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -26302,6 +26609,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "Empaquetamiento de proyectos Python" @@ -26843,6 +27157,10 @@ msgid "" "the file is empty)." msgstr "" +#, fuzzy +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr "Nombre de proyecto" + #, fuzzy #~ msgid "Signing the distribution packages" #~ msgstr "Paquete de Distribución" diff --git a/locales/fa/LC_MESSAGES/messages.po b/locales/fa/LC_MESSAGES/messages.po index bd530130f..7ad603fc8 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2023-02-15 07:52+0000\n" "Last-Translator: Arsalan Dehghani \n" "Language-Team: Persian `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9953,32 +9953,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9987,7 +9995,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10011,83 +10019,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10096,26 +10104,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10123,28 +10131,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10152,33 +10160,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13553,7 +13561,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13563,7 +13571,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13656,9 +13664,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16526,29 +16536,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17361,6 +17371,135 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +#, fuzzy +#| msgid "Translations" +msgid "Installers" +msgstr "ترجمه‌ها" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17936,7 +18075,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18728,10 +18867,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18894,6 +19033,142 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +#| msgid "Translations" +msgid "Installer semantics: none." +msgstr "ترجمه‌ها" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +#| msgid "Translations" +msgid "Installer semantics:" +msgstr "ترجمه‌ها" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "Specifications" @@ -19145,6 +19420,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19879,7 +20155,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19894,7 +20170,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19909,14 +20185,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21308,6 +21580,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21347,436 +21635,427 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +#, fuzzy +msgid "Normalized Names" +msgstr "ترجمه‌ها" + +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 -msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"In addition to the above, the following constraints are placed on the API:" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 -msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" #: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" #: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 -msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 -msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 -msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 +#: ../source/specifications/simple-repository-api.rst:121 #, fuzzy -msgid "Normalized Names" +msgid "HTML Serialization" msgstr "ترجمه‌ها" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -#, fuzzy -#| msgid "Translations" -msgid "Installers" -msgstr "ترجمه‌ها" +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" +msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:158 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:183 +msgid "" +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:202 +msgid "" +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:211 +msgid "" +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:220 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:242 +msgid "" +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:245 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:247 +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:253 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:261 +msgid "" +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:288 +msgid "" +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21785,7 +22064,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21797,7 +22076,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21807,18 +22086,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21826,11 +22105,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21838,7 +22117,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21848,7 +22127,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21858,7 +22137,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21866,28 +22145,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21896,38 +22175,38 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 #, fuzzy msgid "JSON Serialization" msgstr "ترجمه‌ها" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21935,19 +22214,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -22006,7 +22281,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22067,23 +22364,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22092,14 +22389,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22109,7 +22406,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22117,14 +22414,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22134,45 +22431,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22181,35 +22478,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22218,11 +22514,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22230,11 +22526,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22297,12 +22593,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 #, fuzzy msgid "Version + Format Selection" msgstr "ترجمه‌ها" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22311,65 +22607,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22377,7 +22673,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22388,7 +22684,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22397,33 +22693,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22433,7 +22729,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22443,7 +22739,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22451,7 +22747,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22462,22 +22758,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22486,25 +22782,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22512,13 +22808,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22528,18 +22824,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22547,7 +22843,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22557,7 +22853,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22565,11 +22861,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22580,7 +22876,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22588,7 +22884,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22597,7 +22893,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22605,7 +22901,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22615,20 +22911,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22636,7 +22932,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22645,18 +22941,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22664,13 +22960,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22679,23 +22975,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22704,73 +23000,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25786,6 +26093,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/fil/LC_MESSAGES/messages.po b/locales/fil/LC_MESSAGES/messages.po index a75be1b60..1a681829f 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2022-11-19 08:28+0000\n" "Last-Translator: RedFurrFox \n" "Language-Team: Filipino `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9931,32 +9931,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9965,7 +9973,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9989,83 +9997,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10074,26 +10082,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10101,28 +10109,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10130,33 +10138,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13531,7 +13539,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13541,7 +13549,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13634,9 +13642,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16496,29 +16506,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17331,6 +17341,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17906,7 +18043,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18696,10 +18833,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18862,6 +18999,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19111,6 +19380,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19843,7 +20113,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19858,7 +20128,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19873,14 +20143,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21270,6 +21536,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21309,433 +21591,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21744,7 +22018,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21756,7 +22030,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21766,18 +22040,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21785,11 +22059,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21797,7 +22071,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21807,7 +22081,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21817,7 +22091,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21825,28 +22099,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21855,37 +22129,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21893,19 +22167,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21964,7 +22234,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22025,23 +22317,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22050,14 +22342,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22067,7 +22359,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22075,14 +22367,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22092,45 +22384,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22139,35 +22431,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22176,11 +22467,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22188,11 +22479,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22255,11 +22546,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22268,65 +22559,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22334,7 +22625,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22345,7 +22636,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22354,33 +22645,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22390,7 +22681,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22400,7 +22691,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22408,7 +22699,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22419,22 +22710,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22443,25 +22734,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22469,13 +22760,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22485,18 +22776,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22504,7 +22795,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22514,7 +22805,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22522,11 +22813,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22537,7 +22828,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22545,7 +22836,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22554,7 +22845,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22562,7 +22853,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22572,20 +22863,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22593,7 +22884,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22602,18 +22893,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22621,13 +22912,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22636,23 +22927,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22661,73 +22952,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25734,6 +26036,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/fr/LC_MESSAGES/messages.po b/locales/fr/LC_MESSAGES/messages.po index b31dc0194..7b7315988 100644 --- a/locales/fr/LC_MESSAGES/messages.po +++ b/locales/fr/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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-02-17 11:31+0000\n" "Last-Translator: Bruno Alla \n" "Language-Team: French `. You can install or upgrade nox using ``pip``:" msgstr "" ":doc:`Nox `. Vous pouvez installer ou mettre à jour nox en " "utilisant ``pip`` :" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 #, fuzzy msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " @@ -250,7 +250,7 @@ msgstr "" "Installer Python correctement`_ pour installer Python 3.8 sur votre système " "d'exploitation." -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 #, fuzzy msgid "" "To build the guide, run the following shell command in the project's root " @@ -259,7 +259,7 @@ msgstr "" "Pour compiler le guide, exécutez la commande bash suivante dans le dossier " "source :" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -271,7 +271,7 @@ msgstr "" "html`` pour visualiser le guide dans votre navigateur, mais il est " "recommandé de déployer le guide sur un serveur HTTP." -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" @@ -279,15 +279,15 @@ msgstr "" "Vous pouvez compiler le guide et le déployer sur un serveur HTTP en " "utilisant la commande suivante :" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "Le guide pourra être consulté à l'adresse http://localhost:8000." -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "Où le guide est-il déployé ?" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " @@ -297,11 +297,11 @@ msgstr "" "disponible à https://readthedocs.org/projects/python-packaging-user-guide/. " "Il est servi à partir d'un domaine personnalisé et présenté par Fast.ly." -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "Guide de conception" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -309,11 +309,11 @@ msgid "" "your contributions to be accepted into the project." msgstr "" -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "Objectif" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." @@ -322,11 +322,11 @@ msgstr "" "d'empaqueter, publier, et installer des projets Python en utilisant des " "outils courants." -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "Portée" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." @@ -334,7 +334,7 @@ msgstr "" "Le guide a pour but de répondre aux questions et de résoudre les problèmes " "par des recommandations précises et ciblées." -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -348,17 +348,17 @@ msgstr "" "eux en détail, alors que ce guide ne décrit que les parties de pip qui sont " "nécessaires pour accomplir les tâches spécifiques décrites dans ce guide." -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "Public cible" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "" "Le public visé par ce guide est toute personne qui utilise Python avec des " "paquets." -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " @@ -369,7 +369,7 @@ msgstr "" "d'éducation, la même culture et bien d'autres choses encore, mais ils " "méritent autant que vous d'apprendre à connaître le paquetage." -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " @@ -380,11 +380,11 @@ msgstr "" "comprend aussi bien des astronomes, des peintres ou des étudiants que des " "développeurs de logiciels professionnels." -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "Tonalité" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." @@ -392,7 +392,7 @@ msgstr "" "Lorsque vous rédigez ce guide, tâchez d'écrire avec un ton accessible et " "simple, même si vous connaissez toutes les solutions." -#: ../source/contribute.rst:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -405,7 +405,7 @@ msgstr "" "connaissez la réponse. Comment répondre ? C'est *ainsi* que vous devriez " "écrire ce guide." -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -421,7 +421,7 @@ msgstr "" "vous souciez pas de respecter des règles de grammaire strictes. Vous avez la " "permission de terminer une phrase par une préposition, si nécessaire." -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -433,15 +433,15 @@ msgstr "" "pouvez faire une blague, mais si vous traitez d'une recommandation de " "sécurité sensible, il est préférable d'éviter toute plaisanterie." -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "Conventions et mécanismes" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "**Écrivez au lecteur**" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -461,11 +461,11 @@ msgstr "Correct : Vous pouvez l'installer en exécutant…" msgid "Right: To install it, run…" msgstr "Correct : Pour l'installer, exécutez…" -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -473,11 +473,11 @@ msgid "" "going to make." msgstr "" -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " @@ -487,11 +487,11 @@ msgstr "" "lien vers la page ou le guide concerné, ou ajoutez un lien vers tout " "document pertinent. Économisez une recherche au lecteur." -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "**Respectez les conventions de nommage**" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -515,11 +515,11 @@ msgstr "Mauvais : …hébergé sur github." msgid "Right: …hosted on GitHub." msgstr "Correct : …hébergé sur GitHub." -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "**Adoptez un style neutre et non genré**" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -541,11 +541,11 @@ msgstr "Correct : Un·e mainteneur·euse met en ligne le fichier. Puis…" msgid "Right: A maintainer uploads the file. Then the maintainer…" msgstr "Correct : Un mainteneur téléverse le fichier. Puis le mainteneur…" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "**Titres**" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -558,7 +558,7 @@ msgstr "" "pourrait vouloir savoir *Comment installer MaBibliothèque ?* et un bon titre " "pourrait être *Installer MaBibliothèque*." -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -574,11 +574,11 @@ msgstr "Mauvais : Les Choses Que Vous Devez Savoir À Propos de Python" msgid "Right: Things you should know about Python" msgstr "Correct : Les choses que vous devez savoir à propos de Python" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "**Nombres**" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -2748,7 +2748,7 @@ msgid "" msgstr "" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 #, fuzzy msgid "Versioning" msgstr "Traductions" @@ -4126,7 +4126,7 @@ msgstr "Description" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "Exemples" @@ -8736,9 +8736,9 @@ msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -10189,32 +10189,42 @@ msgid "poetry-core" msgstr "poetry" #: ../source/guides/writing-pyproject-toml.rst:317 +#, fuzzy +#| msgid "build" +msgid "uv-build" +msgstr "build" + +#: ../source/guides/writing-pyproject-toml.rst:318 msgid "1.27.0" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:318 +#: ../source/guides/writing-pyproject-toml.rst:319 msgid "77.0.3" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:319 +#: ../source/guides/writing-pyproject-toml.rst:320 msgid "3.12" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:320 +#: ../source/guides/writing-pyproject-toml.rst:321 msgid "2.4.0" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:321 +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "``license``" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -10223,7 +10233,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10247,7 +10257,7 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 #, fuzzy @@ -10255,71 +10265,71 @@ msgstr "" msgid "``license-files``" msgstr "``license``" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "``classifiers``" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 #, fuzzy msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " @@ -10328,7 +10338,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:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10337,26 +10347,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10364,28 +10374,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10393,34 +10403,34 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 #, fuzzy msgid "A full example" msgstr "Exemples" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13925,7 +13935,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13935,7 +13945,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -14032,9 +14042,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "Spécification" @@ -16958,29 +16970,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17798,6 +17810,135 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +#, fuzzy +msgid "This specification was originally defined in :pep:`592`." +msgstr "Cette spécification a été originellement définie dans la :pep: `740`." + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +#, fuzzy +msgid "Installers" +msgstr "Installateur" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -18380,7 +18521,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -19215,10 +19356,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -19389,6 +19530,147 @@ msgstr "" "Mars 2001 : Les métadonnées de base 1.0 ont été approuvées grâce au :pep:" "`241`." +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +#| msgid "Project Summaries" +msgid "Project Status Markers" +msgstr "Résumé des projets" + +#: ../source/specifications/project-status-markers.rst:9 +#, fuzzy +msgid "This specification was originally defined in :pep:`792`." +msgstr "Cette spécification a été originellement définie dans la :pep: `740`." + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +msgid "Installer semantics: none." +msgstr "Format d'installation" + +#: ../source/specifications/project-status-markers.rst:45 +#, fuzzy +#| msgid "``packages``" +msgid "``archived``" +msgstr "``packages``" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +msgid "Installer semantics:" +msgstr "Installateur" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +#, fuzzy +#| msgid "Deprecated" +msgid "``deprecated``" +msgstr "Obsolète" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy msgid "``pylock.toml`` Specification" @@ -19648,6 +19930,7 @@ msgid "``dependency-groups``" msgstr "``dependencies``" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 #, fuzzy msgid "**Inspiration**: :ref:`pyproject-tool-table`" @@ -20446,8 +20729,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" -msgstr "" +#, fuzzy +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr "pyproject.toml" #: ../source/specifications/pylock-toml.rst:676 msgid "" @@ -20461,7 +20745,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -20478,15 +20762,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:701 -#, fuzzy -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "pyproject.toml" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21882,6 +22161,24 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +#, fuzzy +#| msgid "Data schema" +msgid "PyPA schemas" +msgstr "Schéma de données" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21926,438 +22223,432 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +#, fuzzy +msgid "Normalized Names" +msgstr "Traductions" + +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 -msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"In addition to the above, the following constraints are placed on the API:" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 -msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." -msgstr "" +#: ../source/specifications/simple-repository-api.rst:60 +#, fuzzy +#| msgid "This would end up looking like::" +msgid "This would end up looking like:" +msgstr "Cela ressemblerait à ::" #: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" #: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 -msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" #: ../source/specifications/simple-repository-api.rst:103 +#, fuzzy +msgid "Clients" +msgstr "Contenu" + +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" #: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" +#: ../source/specifications/simple-repository-api.rst:121 +#, fuzzy +msgid "HTML Serialization" +msgstr "Traductions" + #: ../source/specifications/simple-repository-api.rst:125 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" #: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +#, fuzzy +msgid "Project List" +msgstr "Projet" + #: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +msgid "" +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" #: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 #, fuzzy -msgid "Normalized Names" -msgstr "Traductions" +msgid "Project Detail" +msgstr "Nom du projet" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:158 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -#, fuzzy -msgid "Installers" -msgstr "Installateur" - -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:186 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:211 +msgid "" +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:217 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -#, fuzzy -#| msgid "This would end up looking like::" -msgid "This would end up looking like:" -msgstr "Cela ressemblerait à ::" - -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -#, fuzzy -msgid "Clients" -msgstr "Contenu" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." +msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -22366,7 +22657,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -22378,7 +22669,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -22388,18 +22679,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -22407,11 +22698,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -22419,7 +22710,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -22429,7 +22720,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -22439,7 +22730,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -22447,28 +22738,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -22477,38 +22768,38 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 #, fuzzy msgid "JSON Serialization" msgstr "Traductions" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -22516,19 +22807,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -#, fuzzy -msgid "Project List" -msgstr "Projet" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 #, fuzzy msgid "As an example:" msgstr "Exemples" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -22589,7 +22875,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22651,23 +22958,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22676,14 +22983,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22693,7 +23000,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22701,14 +23008,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22718,45 +23025,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22765,35 +23072,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22802,11 +23108,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22814,11 +23120,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22882,12 +23188,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 #, fuzzy msgid "Version + Format Selection" msgstr "Traductions" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22896,65 +23202,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22962,7 +23268,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22973,7 +23279,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22982,33 +23288,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -23018,7 +23324,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -23028,7 +23334,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -23036,7 +23342,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -23047,22 +23353,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -23071,25 +23377,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23097,13 +23403,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -23113,18 +23419,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23132,7 +23438,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -23142,7 +23448,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -23150,11 +23456,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -23165,7 +23471,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -23173,7 +23479,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -23182,7 +23488,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -23190,7 +23496,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -23200,20 +23506,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23221,7 +23527,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -23230,18 +23536,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -23249,13 +23555,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23264,23 +23570,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23289,73 +23595,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -26383,6 +26700,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" @@ -26919,6 +27243,10 @@ msgid "" "the file is empty)." msgstr "" +#, fuzzy +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr "pyproject.toml" + #, fuzzy #~ msgid "Signing the distribution packages" #~ msgstr "Paqueter et distribuer des projets" diff --git a/locales/frc/LC_MESSAGES/messages.po b/locales/frc/LC_MESSAGES/messages.po index 7a44e8ab4..b6a8fd228 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -163,11 +163,11 @@ msgid "" "`this guide`_ before translating on Weblate." msgstr "" -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -183,22 +183,22 @@ msgid "" "original reference:" msgstr "" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " "you'll need:" msgstr "" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9925,32 +9925,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9959,7 +9967,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9983,83 +9991,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10068,26 +10076,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10095,28 +10103,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10124,33 +10132,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13525,7 +13533,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13535,7 +13543,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13628,9 +13636,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16490,29 +16500,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17325,6 +17335,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17900,7 +18037,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18690,10 +18827,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18856,6 +18993,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19105,6 +19374,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19837,7 +20107,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19852,7 +20122,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19867,14 +20137,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21264,6 +21530,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21303,433 +21585,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21738,7 +22012,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21750,7 +22024,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21760,18 +22034,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21779,11 +22053,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21791,7 +22065,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21801,7 +22075,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21811,7 +22085,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21819,28 +22093,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21849,37 +22123,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21887,19 +22161,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21958,7 +22228,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22019,23 +22311,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22044,14 +22336,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22061,7 +22353,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22069,14 +22361,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22086,45 +22378,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22133,35 +22425,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22170,11 +22461,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22182,11 +22473,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22249,11 +22540,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22262,65 +22553,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22328,7 +22619,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22339,7 +22630,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22348,33 +22639,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22384,7 +22675,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22394,7 +22685,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22402,7 +22693,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22413,22 +22704,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22437,25 +22728,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22463,13 +22754,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22479,18 +22770,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22498,7 +22789,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22508,7 +22799,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22516,11 +22807,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22531,7 +22822,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22539,7 +22830,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22548,7 +22839,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22556,7 +22847,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22566,20 +22857,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22587,7 +22878,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22596,18 +22887,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22615,13 +22906,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22630,23 +22921,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22655,73 +22946,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25728,6 +26030,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/gl/LC_MESSAGES/messages.po b/locales/gl/LC_MESSAGES/messages.po index 5b4e03ed4..e46661713 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -163,11 +163,11 @@ msgid "" "`this guide`_ before translating on Weblate." msgstr "" -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -183,22 +183,22 @@ msgid "" "original reference:" msgstr "" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " "you'll need:" msgstr "" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9925,32 +9925,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9959,7 +9967,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9983,83 +9991,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10068,26 +10076,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10095,28 +10103,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10124,33 +10132,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13525,7 +13533,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13535,7 +13543,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13628,9 +13636,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16490,29 +16500,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17325,6 +17335,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17900,7 +18037,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18690,10 +18827,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18856,6 +18993,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19105,6 +19374,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19837,7 +20107,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19852,7 +20122,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19867,14 +20137,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21264,6 +21530,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21303,433 +21585,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21738,7 +22012,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21750,7 +22024,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21760,18 +22034,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21779,11 +22053,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21791,7 +22065,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21801,7 +22075,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21811,7 +22085,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21819,28 +22093,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21849,37 +22123,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21887,19 +22161,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21958,7 +22228,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22019,23 +22311,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22044,14 +22336,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22061,7 +22353,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22069,14 +22361,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22086,45 +22378,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22133,35 +22425,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22170,11 +22461,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22182,11 +22473,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22249,11 +22540,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22262,65 +22553,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22328,7 +22619,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22339,7 +22630,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22348,33 +22639,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22384,7 +22675,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22394,7 +22685,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22402,7 +22693,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22413,22 +22704,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22437,25 +22728,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22463,13 +22754,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22479,18 +22770,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22498,7 +22789,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22508,7 +22799,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22516,11 +22807,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22531,7 +22822,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22539,7 +22830,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22548,7 +22839,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22556,7 +22847,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22566,20 +22857,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22587,7 +22878,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22596,18 +22887,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22615,13 +22906,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22630,23 +22921,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22655,73 +22946,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25728,6 +26030,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/gmh/LC_MESSAGES/messages.po b/locales/gmh/LC_MESSAGES/messages.po index 0271382a0..7d1df0473 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -163,11 +163,11 @@ msgid "" "`this guide`_ before translating on Weblate." msgstr "" -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -183,22 +183,22 @@ msgid "" "original reference:" msgstr "" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " "you'll need:" msgstr "" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9925,32 +9925,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9959,7 +9967,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9983,83 +9991,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10068,26 +10076,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10095,28 +10103,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10124,33 +10132,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13525,7 +13533,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13535,7 +13543,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13628,9 +13636,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16490,29 +16500,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17325,6 +17335,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17900,7 +18037,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18690,10 +18827,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18856,6 +18993,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19105,6 +19374,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19837,7 +20107,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19852,7 +20122,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19867,14 +20137,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21264,6 +21530,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21303,433 +21585,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21738,7 +22012,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21750,7 +22024,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21760,18 +22034,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21779,11 +22053,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21791,7 +22065,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21801,7 +22075,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21811,7 +22085,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21819,28 +22093,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21849,37 +22123,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21887,19 +22161,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21958,7 +22228,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22019,23 +22311,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22044,14 +22336,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22061,7 +22353,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22069,14 +22361,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22086,45 +22378,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22133,35 +22425,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22170,11 +22461,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22182,11 +22473,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22249,11 +22540,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22262,65 +22553,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22328,7 +22619,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22339,7 +22630,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22348,33 +22639,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22384,7 +22675,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22394,7 +22685,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22402,7 +22693,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22413,22 +22704,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22437,25 +22728,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22463,13 +22754,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22479,18 +22770,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22498,7 +22789,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22508,7 +22799,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22516,11 +22807,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22531,7 +22822,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22539,7 +22830,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22548,7 +22839,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22556,7 +22847,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22566,20 +22857,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22587,7 +22878,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22596,18 +22887,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22615,13 +22906,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22630,23 +22921,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22655,73 +22946,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25728,6 +26030,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/hi/LC_MESSAGES/messages.po b/locales/hi/LC_MESSAGES/messages.po index 39703346d..0b7a06016 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2024-09-16 10:09+0000\n" "Last-Translator: kumar Shivam \n" "Language-Team: Hindi `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9983,32 +9983,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -10017,7 +10025,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10041,83 +10049,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10126,26 +10134,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10153,28 +10161,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10182,33 +10190,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13585,7 +13593,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13595,7 +13603,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13688,9 +13696,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16557,29 +16567,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17394,6 +17404,135 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +#, fuzzy +#| msgid "Installing packages" +msgid "Installers" +msgstr "पैकेज प्रतिष्ठापन" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17969,7 +18108,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18759,10 +18898,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18925,6 +19064,142 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +#| msgid "Project name" +msgid "Project Status Markers" +msgstr "परियोजना" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +#| msgid "Installing packages" +msgid "Installer semantics:" +msgstr "पैकेज प्रतिष्ठापन" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19175,6 +19450,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 #, fuzzy #| msgid "Project name" @@ -19912,8 +20188,10 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" -msgstr "" +#, fuzzy +#| msgid "Project name" +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr "परियोजना" #: ../source/specifications/pylock-toml.rst:676 msgid "" @@ -19927,7 +20205,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19942,16 +20220,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -#, fuzzy -#| msgid "Project name" -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "परियोजना" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21341,6 +21613,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21382,435 +21670,429 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" #: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" #: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 -msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 -msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 -msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +#, fuzzy +#| msgid "Project name" +msgid "Project List" +msgstr "परियोजना" + +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 #, fuzzy -#| msgid "Installing packages" -msgid "Installers" -msgstr "पैकेज प्रतिष्ठापन" +#| msgid "Project name" +msgid "Project Detail" +msgstr "परियोजना" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:158 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:183 +msgid "" +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:202 +msgid "" +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:211 +msgid "" +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:220 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:242 +msgid "" +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:245 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:247 +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:253 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:261 +msgid "" +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:288 +msgid "" +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21819,7 +22101,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21831,7 +22113,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21841,18 +22123,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21860,11 +22142,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21872,7 +22154,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21882,7 +22164,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21892,7 +22174,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21900,28 +22182,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21930,37 +22212,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21968,19 +22250,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -#, fuzzy -#| msgid "Project name" -msgid "Project List" -msgstr "परियोजना" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -22041,7 +22317,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22104,23 +22400,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22129,14 +22425,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22146,7 +22442,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22154,14 +22450,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22171,45 +22467,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22218,35 +22514,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22255,11 +22550,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22267,11 +22562,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22334,11 +22629,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22347,65 +22642,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22413,7 +22708,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22424,7 +22719,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22433,33 +22728,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22469,7 +22764,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22479,7 +22774,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22487,7 +22782,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22498,22 +22793,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22522,25 +22817,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22548,13 +22843,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22564,18 +22859,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22583,7 +22878,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22593,7 +22888,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22601,11 +22896,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22616,7 +22911,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22624,7 +22919,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22633,7 +22928,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22641,7 +22936,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22651,20 +22946,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22672,7 +22967,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22681,18 +22976,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22700,13 +22995,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22715,23 +23010,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22740,73 +23035,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25815,6 +26121,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" @@ -26350,3 +26663,8 @@ msgid "" "recommended to stick with *regular packages* and ``__init__.py`` (even if " "the file is empty)." msgstr "" + +#, fuzzy +#~| msgid "Project name" +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr "परियोजना" diff --git a/locales/id/LC_MESSAGES/messages.po b/locales/id/LC_MESSAGES/messages.po index 262c2278c..a7873be1a 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2024-10-17 21:16+0000\n" "Last-Translator: oon arfiandwi \n" "Language-Team: Indonesian `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9989,32 +9989,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -10023,7 +10031,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10047,83 +10055,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10132,26 +10140,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10159,28 +10167,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10188,33 +10196,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13589,7 +13597,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13599,7 +13607,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13692,9 +13700,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "Spesifikasi" @@ -16562,29 +16572,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17399,6 +17409,135 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +#, fuzzy +#| msgid "Translations" +msgid "Installers" +msgstr "Penerjemahan" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17976,7 +18115,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18768,10 +18907,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18934,6 +19073,142 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +#| msgid "Translations" +msgid "Installer semantics: none." +msgstr "Penerjemahan" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +#| msgid "Translations" +msgid "Installer semantics:" +msgstr "Penerjemahan" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "Specification" @@ -19185,6 +19460,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19919,7 +20195,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19934,7 +20210,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19949,14 +20225,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21348,6 +21620,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21387,436 +21675,427 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +#, fuzzy +msgid "Normalized Names" +msgstr "Penerjemahan" + +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 -msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"In addition to the above, the following constraints are placed on the API:" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 -msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" #: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" #: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 -msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 -msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 -msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 +#: ../source/specifications/simple-repository-api.rst:121 #, fuzzy -msgid "Normalized Names" +msgid "HTML Serialization" msgstr "Penerjemahan" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -#, fuzzy -#| msgid "Translations" -msgid "Installers" -msgstr "Penerjemahan" +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" +msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:158 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:183 +msgid "" +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:202 +msgid "" +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:211 +msgid "" +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:220 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:242 +msgid "" +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:245 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:247 +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:253 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:261 +msgid "" +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:288 +msgid "" +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21825,7 +22104,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21837,7 +22116,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21847,18 +22126,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21866,11 +22145,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21878,7 +22157,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21888,7 +22167,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21898,7 +22177,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21906,28 +22185,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21936,38 +22215,38 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 #, fuzzy msgid "JSON Serialization" msgstr "Penerjemahan" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21975,19 +22254,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -22046,7 +22321,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22107,23 +22404,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22132,14 +22429,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22149,7 +22446,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22157,14 +22454,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22174,45 +22471,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22221,35 +22518,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22258,11 +22554,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22270,11 +22566,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22337,12 +22633,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 #, fuzzy msgid "Version + Format Selection" msgstr "Penerjemahan" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22351,65 +22647,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22417,7 +22713,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22428,7 +22724,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22437,33 +22733,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22473,7 +22769,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22483,7 +22779,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22491,7 +22787,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22502,22 +22798,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22526,25 +22822,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22552,13 +22848,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22568,18 +22864,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22587,7 +22883,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22597,7 +22893,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22605,11 +22901,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22620,7 +22916,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22628,7 +22924,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22637,7 +22933,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22645,7 +22941,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22655,20 +22951,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22676,7 +22972,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22685,18 +22981,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22704,13 +23000,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22719,23 +23015,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22744,73 +23040,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25826,6 +26133,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/ja/LC_MESSAGES/messages.po b/locales/ja/LC_MESSAGES/messages.po index f7501a93b..e5521e1db 100644 --- a/locales/ja/LC_MESSAGES/messages.po +++ b/locales/ja/LC_MESSAGES/messages.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-19 01:36+0000\n" -"PO-Revision-Date: 2025-07-30 23:18+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" +"PO-Revision-Date: 2025-08-12 13:50+0000\n" "Last-Translator: moto kawasaki \n" "Language-Team: Japanese \n" @@ -210,11 +210,11 @@ msgstr "" "もしあなたがreStructuredText(RST)の書き方に慣れていないのであれば、Weblateで" "翻訳作業をする前に `このガイド `_ を読んでください。" -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "**参照リンクのテキストをそのまま翻訳することはやめてください**" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -233,11 +233,11 @@ msgid "" msgstr "" "正: 次のテキストをあなた自身の言語に翻訳して、さらに元の参照リンクを残す:" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "この文書を手元でビルドするには" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " @@ -247,13 +247,13 @@ msgstr "" "ることはあなたが行った変更をテストするのに役に立ちます。この文書を手元でビル" "ドするには:" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr "" ":doc:`Nox ` 。 ``pip`` を用いてnoxをインストールまたはアップグレー" "ドできます:" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions ` を見てほしい。" -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 msgid "" "To build the guide, run the following shell command in the project's root " "folder:" @@ -273,7 +273,7 @@ msgstr "" "この文書をビルドするには、以下のシェルコマンドをプロジェクトのルートディレク" "トリで実行してください:" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -284,21 +284,21 @@ msgstr "" "ここの ``index.html`` をブラウザで開くことでこの文書を閲覧することができます" "が、HTTPサーバを使って文書を提供する方がお勧めです。" -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" msgstr "HTTPサーバを用いてこの文書を提供するには、以下のコマンドを使います。:" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "この文書は、 http://localhost:8000 から閲覧できます。" -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "この文書が展開される場所" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " @@ -309,11 +309,11 @@ msgstr "" "Fast.ly から独自のドメイン名から提供されるようになっています(第二文はここだけ" "では意味が取れない)。" -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "スタイルガイド" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -325,11 +325,11 @@ msgstr "" "であなたの貢献がまとまりのある全体の中の一部として追加され、あなたの貢献がプ" "ロジェクトによって受け入れられやすくなります。" -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "目的" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." @@ -337,11 +337,11 @@ msgstr "" "|PyPUG|の目的は、現在のツール群を用いてPythonプロジェクトをパッケージし、公開" "し、インストールする方法に関して権威ある参照先となることです。" -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "スコープ" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." @@ -349,7 +349,7 @@ msgstr "" "この文書は、正確で的を射た推奨事項を添えた形で疑問に答え問題を解決することを" "意図しています。" -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -363,15 +363,15 @@ msgstr "" "記述していますが、この文書ではこの文書に記述されたタスクを完了するために必要" "となる部分に限ってpipに触れています。" -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "想定される読者" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "この文書の読者として想定されるのは、Pythonのパッケージを扱う方です。" -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " @@ -382,7 +382,7 @@ msgstr "" "れませんが、しかし、あなたがあなたにできる限りパッケージングについて学ぶこと" "を称賛します。" -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " @@ -393,11 +393,11 @@ msgstr "" "ア開発を職業としているプロだけでなく、宇宙飛行士や画家あるいは学生も含まれる" "のです。" -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "口調や語調" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." @@ -405,7 +405,7 @@ msgstr "" "この文書を書く時には、たとえあなたが答えを全部わかっていたとしても親しみやす" "く控えめな語調で書くように努力してください。" -#: ../source/contribute.rst:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -418,7 +418,7 @@ msgstr "" "なたはどんな風に応対しますか?*それ*こそが、あなたがこの文書を書く時のやり方" "なのです。" -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -433,7 +433,7 @@ msgstr "" "することはありません。あなたはここに、もしそうしたいのならば前置詞で文を終" "わっても構わないと言う権限を与えられました。" -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -445,15 +445,15 @@ msgstr "" "んが、繊細な注意を必要とするセキュリティ上の推奨事項をカバーするなら冗談を全" "く入れないようにしたいと思うかもしれません。" -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "慣例と手順" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "**読者に向けて書く**" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -473,11 +473,11 @@ msgstr "正:...を実行することであなたはそれをインストール msgid "Right: To install it, run…" msgstr "正:それをインストールするには、...を実行してください。" -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "**前提条件の明示**" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -488,11 +488,11 @@ msgstr "" "するということは、この文書のどのページであってもそれが読者にとっての初めての" "ページになるかもしれないということです。" -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "**豊富な相互参照**" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " @@ -502,11 +502,11 @@ msgstr "" "部分へのリンク、または、どこか他の場所であっても適切な説明文書へのリンクも提" "供してください。" -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "**命名慣習を尊重すること**" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -530,11 +530,11 @@ msgstr "誤:...はgithubにホストされている。" msgid "Right: …hosted on GitHub." msgstr "正:...はGitHubにホストされている。" -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "**ジェンダー中立なスタイルを使う**" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -560,11 +560,11 @@ msgstr "" "正:メンテナンス担当者がファイルをアップロードする。それから、メンテナンス担" "当者は…" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "**見出しの付け方**" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -576,7 +576,7 @@ msgstr "" "すれば良いの?* ということを知りたいとすれば、適切な見出しとしては *MyLibrary" "をインストールするには* のようになるでしょう。" -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -594,11 +594,11 @@ msgstr "" msgid "Right: Things you should know about Python" msgstr "正:Pythonについてあなたが知っておくべき事柄" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "**数値の書き方**" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -3522,7 +3522,7 @@ msgstr "" "せん。" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 msgid "Versioning" msgstr "バージョニング" @@ -5376,7 +5376,7 @@ msgstr "説明" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "例" @@ -6144,10 +6144,9 @@ msgid "" "from-source-src-layout`." msgstr "" "例えば ``python src/greetings`` のように、:term:`ソースコードツリー ` " -"から直接にコマンドラインインタフェースを呼び出すことができるようにするために" -"は、このファイルの中にそれなりのハックが置かれていることでしょう; " -"もっと読みたければ :ref:`running-cli-from-source-src-layout` をどうぞ。" +"Source Tree>` から直接にコマンドラインインタフェースを呼び出すことができるよ" +"うにするためには、このファイルの中にそれなりのハックが置かれていることでしょ" +"う; もっと読みたければ :ref:`running-cli-from-source-src-layout` をどうぞ。" #: ../source/guides/creating-command-line-tools.rst:117 msgid "``pyproject.toml``" @@ -6161,12 +6160,11 @@ msgid "" "`writing-pyproject-toml`, adding a dependency on ``typer`` (this tutorial " "uses version *0.12.3*)." msgstr "" -"プロジェクトの :term:`メタデータ ` は " -":term:`pyproject.toml` の中にあります。 ``typer`` (" -"このチュートリアルではバージョン *0.1.2.3* を使います) " -"への依存を追加しながら、 :ref:`writing-pyproject-toml` " -"に記述されているように :term:`pyproject メタデータキー ` や ``[build-system]`` テーブルに値が埋め込まれます。" +"プロジェクトの :term:`メタデータ ` は :term:`pyproject." +"toml` の中にあります。 ``typer`` (このチュートリアルではバージョン *0.1.2.3* " +"を使います) への依存を追加しながら、 :ref:`writing-pyproject-toml` に記述され" +"ているように :term:`pyproject メタデータキー ` や " +"``[build-system]`` テーブルに値が埋め込まれます。" #: ../source/guides/creating-command-line-tools.rst:122 msgid "" @@ -6176,18 +6174,17 @@ msgid "" "Subkey>`:" msgstr "" "コマンドラインツールとして認識されるプロジェクト向けには、さらに " -"``console_scripts`` :ref:`エントリポイント ` " -"(:ref:`console_scripts`をご覧ください) が :term:`サブキー ` として追加されている必要があります:" +"``console_scripts`` :ref:`エントリポイント ` (:ref:" +"`console_scripts`をご覧ください) が :term:`サブキー ` として追加されている必要があります:" #: ../source/guides/creating-command-line-tools.rst:129 msgid "" "Now, the project's source tree is ready to be transformed into a :term:" "`distribution package `, which makes it installable." msgstr "" -"これで、プロジェクトのソースコードツリーが、インストールすることができる " -":term:`配布パッケージ ` " -"へと変換される準備ができました。" +"これで、プロジェクトのソースコードツリーが、インストールすることができる :" +"term:`配布パッケージ ` へと変換される準備ができました。" #: ../source/guides/creating-command-line-tools.rst:134 msgid "Installing the package with ``pipx``" @@ -6205,8 +6202,9 @@ msgstr "" msgid "" "This will expose the executable script we defined as an entry point and make " "the command ``greet`` available. Let's test it:" -msgstr "これによって、エントリポイントとして定義した実行可能なスクリプトを露出し、" -"コマンド ``greet`` を利用可能にします。試してみましょう:" +msgstr "" +"これによって、エントリポイントとして定義した実行可能なスクリプトを露出し、コ" +"マンド ``greet`` を利用可能にします。試してみましょう:" #: ../source/guides/creating-command-line-tools.rst:155 msgid "" @@ -6214,10 +6212,9 @@ msgid "" "program's usage by calling it with the ``--help`` option, or configure " "completions via the ``--install-completion`` option." msgstr "" -"この例では ``typer`` を使っていますので、今や ``--help`` " -"オプションをつけて呼び出すことでプログラムの使用方法の概要を得たり、 " -"``--install-completion`` " -"オプション経由でコマンドライン補完を得ることができるでしょう。" +"この例では ``typer`` を使っていますので、今や ``--help`` オプションをつけて呼" +"び出すことでプログラムの使用方法の概要を得たり、 ``--install-completion`` オ" +"プション経由でコマンドライン補完を得ることができるでしょう。" #: ../source/guides/creating-command-line-tools.rst:158 msgid "" @@ -6225,8 +6222,8 @@ msgid "" "which will create a temporary (but cached) virtual environment for it:" msgstr "" "プログラムを永続的にインストールすることなしにただプログラムを走らせるために" -"は、一時的な (しかしキャッシュされる) 仮想環境を作ってくれる ``pipx run`` " -"を使いましょう。" +"は、一時的な (しかしキャッシュされる) 仮想環境を作ってくれる ``pipx run`` を" +"使いましょう。" #: ../source/guides/creating-command-line-tools.rst:165 msgid "" @@ -6234,10 +6231,10 @@ msgid "" "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)." msgstr "" -"しかしながら、このシンタックスはちょっと実際的ではありません; " -"上で定義したエントリポイントの名称がパッケージ名称と一致しないので、 " -"(たとえひとつしか実行スクリプトがないとしても) " -"明示的にどの実行スクリプトを走らせるのかを述べる必要があります。" +"しかしながら、このシンタックスはちょっと実際的ではありません; 上で定義したエ" +"ントリポイントの名称がパッケージ名称と一致しないので、 (たとえひとつしか実行" +"スクリプトがないとしても) 明示的にどの実行スクリプトを走らせるのかを述べる必" +"要があります。" #: ../source/guides/creating-command-line-tools.rst:168 msgid "" @@ -6245,9 +6242,9 @@ msgid "" "an entry point specific to ``pipx run``. The same can be defined as follows " "in :file:`pyproject.toml`:" msgstr "" -"しかしながら、この問題に対するもっと実際的な解決法で、 ``pipx run`` " -"でエントリポイントを指定する形式があります。以下に述べる " -":file:`pyproject.toml` 内で定義することで同様のことができるのです:" +"しかしながら、この問題に対するもっと実際的な解決法で、 ``pipx run`` でエント" +"リポイントを指定する形式があります。以下に述べる :file:`pyproject.toml` 内で" +"定義することで同様のことができるのです:" #: ../source/guides/creating-command-line-tools.rst:177 msgid "" @@ -6256,9 +6253,8 @@ msgid "" "makes this command possible:" msgstr "" "このエントリポイント (その名称がパッケージ名称と *一致しなければなりません*) " -"のおかげで、 ``pipx`` " -"は実行可能なスクリプトをデフォルトのものとして選択しそれを走らせるでしょう、" -"そして、それはこのコマンドを実現可能にします:" +"のおかげで、 ``pipx`` は実行可能なスクリプトをデフォルトのものとして選択しそ" +"れを走らせるでしょう、そして、それはこのコマンドを実現可能にします:" #: ../source/guides/creating-command-line-tools.rst:185 msgid "Conclusion" @@ -6274,14 +6270,12 @@ msgid "" "some research ` on how your package is " "received!" msgstr "" -"これまでに、 Python " -"で書かれたコマンドラインアプリケーションをパッケージする方法がわかったものと" -"思います。さらなる一歩としては、そのパッケージを配布すること、つまり、" -"最も一般的には :term:`PyPI ` のような :term:`" -"パッケージインデックス ` " -"へとアップロードすることでしょう。それをするためには、 :ref:`" -"プロジェクトをパッケージする ` " -"の指示に従ってください。そして、一旦アップロードができたなら、" +"これまでに、 Python で書かれたコマンドラインアプリケーションをパッケージする" +"方法がわかったものと思います。さらなる一歩としては、そのパッケージを配布する" +"こと、つまり、最も一般的には :term:`PyPI ` のよ" +"うな :term:`パッケージインデックス ` へとアップロードすること" +"でしょう。それをするためには、 :ref:`プロジェクトをパッケージする ` の指示に従ってください。そして、一旦アップロードができたなら、" "パッケージがどのように受け入れられたかについて :ref:`いくらかの調査を行う " "` ことを実行してください!" @@ -7260,8 +7254,8 @@ msgid "" "standard :ref:`core-metadata` 1.2 specification via the :ref:`\"Requires-" "Python\" ` attribute." msgstr "" -"古いバージョンのPythonへのサポートを取りやめる能力については、標準的な :ref" -":`core-metadata` 1.2 仕様の :ref:`Requires-Python ` アトリビュートで有効化されています。" #: ../source/guides/dropping-older-python-versions.rst:9 @@ -7271,21 +7265,20 @@ msgid "" "version in the package metadata. If they do not match, it will attempt to " "install the last package distribution that supported that Python runtime." msgstr "" -"Pip のような Metadata 1.2+ のインストーラは、動作中の Python " -"ランタイムのバージョンとパッケージのメタデータで要求されているバージョンを比" -"較突合することで、この仕様を遵守しようとします。もし両者が一致しなければ、" -"その Python " -"ランタイムでサポートされているパッケージ配布物の中で最新のものをインストール" -"しようと試みます。" +"Pip のような Metadata 1.2+ のインストーラは、動作中の Python ランタイムのバー" +"ジョンとパッケージのメタデータで要求されているバージョンを比較突合すること" +"で、この仕様を遵守しようとします。もし両者が一致しなければ、その Python ラン" +"タイムでサポートされているパッケージ配布物の中で最新のものをインストールしよ" +"うと試みます。" #: ../source/guides/dropping-older-python-versions.rst:12 msgid "" "This mechanism can be used to drop support for older Python versions, by " "amending the ``Requires-Python`` attribute in the package metadata." msgstr "" -"パッケージのメタデータにある ``Requires-Python`` 属性を修正することで、" -"古いバージョンの Python " -"へのサポートを削除するのにこのメカニズムを利用することができます。" +"パッケージのメタデータにある ``Requires-Python`` 属性を修正することで、古い" +"バージョンの Python へのサポートを削除するのにこのメカニズムを利用することが" +"できます。" #: ../source/guides/dropping-older-python-versions.rst:15 msgid "Requirements" @@ -7296,9 +7289,8 @@ msgid "" "This workflow requires that the user installing the package uses Pip [#]_, " "or another installer that supports the Metadata 1.2 specification." msgstr "" -"このワークフローは、パッケージをインストールしようとするユーザが Pip " -"か、または、Metadata 1.2 " -"の仕様を満足する別のインストーラを使うことを要求します。" +"このワークフローは、パッケージをインストールしようとするユーザが Pip か、また" +"は、Metadata 1.2 の仕様を満足する別のインストーラを使うことを要求します。" #: ../source/guides/dropping-older-python-versions.rst:20 msgid "Dealing with the universal wheels" @@ -7313,13 +7305,12 @@ msgid "" "just ``py3``. It is often configured within :file:`setup.cfg` under the " "``[bdist_wheel]`` section by setting ``universal = 1``." msgstr "" -"伝統的には、Python 2 と Python 3 の両方に文法的な互換性のある Python " -"ソースコードを提供する :ref:`setuptools` プロジェクトは、 ``py2.py3`` " -"というタグをその名前の中に持つ :term:`wheels ` を生成します。 Python " -"2 へのサポートをやめる時には、このタグをただの ``py3`` " -"に変更するのを忘れないことが重要です。これは、しばしば、 :file:`setup.cfg` " -"の中の ``[bdist_wheel]`` セクションで ``universal=1`` " -"として設定されています。" +"伝統的には、Python 2 と Python 3 の両方に文法的な互換性のある Python ソース" +"コードを提供する :ref:`setuptools` プロジェクトは、 ``py2.py3`` というタグを" +"その名前の中に持つ :term:`wheels ` を生成します。 Python 2 へのサポー" +"トをやめる時には、このタグをただの ``py3`` に変更するのを忘れないことが重要で" +"す。これは、しばしば、 :file:`setup.cfg` の中の ``[bdist_wheel]`` セクション" +"で ``universal=1`` として設定されています。" #: ../source/guides/dropping-older-python-versions.rst:29 msgid "" @@ -7335,9 +7326,9 @@ msgid "" "invocations, passing the ``--universal`` flag on the command line could " "override this setting." msgstr "" -"``setup.py`` から直接に呼び出すことは :ref:`非推奨 ` " -"になっていて、コマンドラインで ``--universal`` " -"フラグを渡すことでこの設定を上書きできるでしょう。" +"``setup.py`` から直接に呼び出すことは :ref:`非推奨 ` に" +"なっていて、コマンドラインで ``--universal`` フラグを渡すことでこの設定を上書" +"きできるでしょう。" #: ../source/guides/dropping-older-python-versions.rst:45 msgid "Defining the Python version required" @@ -7362,11 +7353,10 @@ msgid "" "configuration field corresponds to the :ref:`Requires-Python ` core metadata field:" msgstr "" -"プロジェクトがどのバージョンの Python " -"配布物をサポートしているかを宣言するバージョンレンジ を " -":file:`pyproject.toml` 内に設定しましょう。 :ref:`requires-python` " -"設定フィールドは、 :ref:`Requires-Python ` " -"コアメタデータに対応しています:" +"プロジェクトがどのバージョンの Python 配布物をサポートしているかを宣言する" +"バージョンレンジ を :file:`pyproject.toml` 内に設定しましょ" +"う。 :ref:`requires-python` 設定フィールドは、 :ref:`Requires-Python ` コアメタデータに対応しています:" #: ../source/guides/dropping-older-python-versions.rst:80 msgid "" @@ -7374,10 +7364,9 @@ msgid "" "`version-specifiers` specification), such as at least Python 3.9. Or, at " "least Python 3.7 and beyond, skipping the 3.7.0 and 3.7.1 point releases:" msgstr "" -"「少なくとも Python " -"3.9」のような、バージョンの範囲や除外のルールを指定することができます。あるい" -"は、「少なくとも Python 3.7 かそれ以上、しかし、 3.7.0 と 3.7.1 " -"を除く」というポイントリリース:" +"「少なくとも Python 3.9」のような、バージョンの範囲や除外のルールを指定するこ" +"とができます。あるいは、「少なくとも Python 3.7 かそれ以上、しかし、 3.7.0 " +"と 3.7.1 を除く」というポイントリリース:" #: ../source/guides/dropping-older-python-versions.rst:89 msgid "" @@ -7393,10 +7382,9 @@ msgid "" "3.10\"``. Doing so can cause different errors and version conflicts. See the " "`discourse-discussion`_ for more information." msgstr "" -"例えば ``\">=3.8, < 3.10\"`` " -"のようにバージョン範囲に上限を加えることを避けましょう。そうすることで別のエ" -"ラーやバージョンコンフリクトを引き起こすかもしれません。もっと詳しくは、 " -"`discourse-discussion`_ を見てください。" +"例えば ``\">=3.8, < 3.10\"`` のようにバージョン範囲に上限を加えることを避けま" +"しょう。そうすることで別のエラーやバージョンコンフリクトを引き起こすかもしれ" +"ません。もっと詳しくは、 `discourse-discussion`_ を見てください。" #: ../source/guides/dropping-older-python-versions.rst:96 msgid "3. Validating the Metadata before publishing" @@ -7416,10 +7404,9 @@ msgid "" "generates the source package. The file contains a set of keys and values, " "the list of keys is part of the PyPA standard metadata format." msgstr "" -"このファイルは、ソースコードパッケージを生成するときに、 :term:`" -"ビルドバックエンド ` " -"によって生成されます。このファイルには、一連のキーと値を含んでいて、" -"キーのリストは PyPA 標準メタデータフォーマットの一部です。" +"このファイルは、ソースコードパッケージを生成するときに、 :term:`ビルドバック" +"エンド ` によって生成されます。このファイルには、一連のキーと" +"値を含んでいて、キーのリストは PyPA 標準メタデータフォーマットの一部です。" #: ../source/guides/dropping-older-python-versions.rst:103 msgid "You can see the contents of the generated file like this:" @@ -7433,16 +7420,17 @@ msgstr "パッケージを公開する前に、以下のことが適切かどう msgid "" "If you have upgraded correctly, the ``Metadata-Version`` value should be 1.2 " "or higher." -msgstr "アップグレードが正しく終われば、 ``Metadata-Version`` の値が 1.2 " -"かそれ以上になっているはずです。" +msgstr "" +"アップグレードが正しく終われば、 ``Metadata-Version`` の値が 1.2 かそれ以上に" +"なっているはずです。" #: ../source/guides/dropping-older-python-versions.rst:112 msgid "" "The ``Requires-Python`` field is set and matches your specification in the " "configuration file." -msgstr "``Requires-Python`` " -"フィールドが設定されていて、設定ファイルで指定したものに一致しているはずです" -"。" +msgstr "" +"``Requires-Python`` フィールドが設定されていて、設定ファイルで指定したものに" +"一致しているはずです。" #: ../source/guides/dropping-older-python-versions.rst:115 msgid "4. Publishing the package" @@ -7469,12 +7457,11 @@ msgid "" "wider range of users." msgstr "" "人々がまだ依存しているバージョンが一旦ドロップされればダウングレードせざるを" -"得なくなるので、原則として、 Python " -"のバージョンに対するメタデータのサポートは可能な限り長く保たれるべきです。し" -"かしながら、特定のバージョンをサポートすることが、新しい機能の阻害要因になる" -"とか、他の問題が起きるとかする場合は、メタデータの ``Requires-Python`` " -"は修正されるべきです。もちろん、これは、プロジェクトが安定的で広範囲のユーザ" -"をよくカバーするか否かにも依存します。" +"得なくなるので、原則として、 Python のバージョンに対するメタデータのサポート" +"は可能な限り長く保たれるべきです。しかしながら、特定のバージョンをサポートす" +"ることが、新しい機能の阻害要因になるとか、他の問題が起きるとかする場合は、メ" +"タデータの ``Requires-Python`` は修正されるべきです。もちろん、これは、プロ" +"ジェクトが安定的で広範囲のユーザをよくカバーするか否かにも依存します。" #: ../source/guides/dropping-older-python-versions.rst:128 msgid "Each version compatibility change should have its own release." @@ -7487,12 +7474,11 @@ msgid "" "visible places (like the testing environment). Tools like pyupgrade_ or " "`ruff `_ can automate some of this work." msgstr "" -"Python バージョン (のサポート) を落とす時は、使われているバージョン群を " -"(テスト用の環境のような) " -"目にみえる場所に使用するように更新することと同様に、プロジェクトのソースコー" -"ドのシンタックスを全般的に更新することが値打ちのあるものになるかもしれません" -"。 pyupgrade_ や `ruff `_ " -"のようなツール類が、この作業の幾らかを自動化してくれるでしょう。" +"Python バージョン (のサポート) を落とす時は、使われているバージョン群を (テス" +"ト用の環境のような) 目にみえる場所に使用するように更新することと同様に、プロ" +"ジェクトのソースコードのシンタックスを全般的に更新することが値打ちのあるもの" +"になるかもしれません。 pyupgrade_ や `ruff `_ のようなツール類が、この作業の幾らかを自動化してくれるでしょう。" #: ../source/guides/dropping-older-python-versions.rst:138 msgid "Support for the Metadata 1.2 specification has been added in Pip 9.0." @@ -7889,11 +7875,10 @@ msgid "" "libraries, and can take advantage of different levels of vectorized " "instructions available in modern CPUs." msgstr "" -"とりわけ `科学分野のPythonソフトウェア群 `_ " -"のほとんどのソフトウェアに基盤を提供する`NumPy `__ は、" -"他の FORTRAN " -"ライブラリと協調動作したり現代的なCPUで利用可能なさまざまなレベルのベクター演" -"算命令を活用できるように構成可能です。" +"とりわけ `科学分野のPythonソフトウェア群 `_ の" +"ほとんどのソフトウェアに基盤を提供する`NumPy `__ は、他" +"の FORTRAN ライブラリと協調動作したり現代的なCPUで利用可能なさまざまなレベル" +"のベクター演算命令を活用できるように構成可能です。" #: ../source/guides/installing-scientific-packages.rst:19 msgid "" @@ -7904,14 +7889,12 @@ msgid "" "atlas.sourceforge.net/>`__ BLAS/LAPACK library, restricted to SSE2 " "instructions, so they may not provide optimal linear algebra performance." msgstr "" -"Numpy のバージョン 1.10.4 および SciPy のバージョン 1.0.0 以降は、" -"主要なオペレーティングシステム (WindowsとmacOSとLinux)向けに32 ビットと 64 " -"ビットのビルド済みバイナリが ``wheel`` " -"形式でPyPIに準備されています。ただ、Windowsでは、SSE2命令セットに限定された `" -"ATLAS `__ BLAS/LAPACK ライブラリに " -"NumPy " -"がリンクされているので、線形代数のパフォーマンスが最適化されていない可能性が" -"あります。" +"Numpy のバージョン 1.10.4 および SciPy のバージョン 1.0.0 以降は、主要なオペ" +"レーティングシステム (WindowsとmacOSとLinux)向けに32 ビットと 64 ビットのビル" +"ド済みバイナリが ``wheel`` 形式でPyPIに準備されています。ただ、Windowsでは、" +"SSE2命令セットに限定された `ATLAS `__ " +"BLAS/LAPACK ライブラリに NumPy がリンクされているので、線形代数のパフォーマン" +"スが最適化されていない可能性があります。" #: ../source/guides/installing-scientific-packages.rst:26 msgid "" @@ -8052,9 +8035,9 @@ msgid "" "that provide the full SciPy stack to end users in an easy to use and update " "format." msgstr "" -"SciPy サイトには、利用・更新が簡単なフォーマットでエンドユーザ向けの SciPy " -"の全機能を提供する `いくつかの配布物 `_ " -"のリストがあります。" +"SciPy サイトには、利用・更新が簡単なフォーマットでエンドユーザ向けの SciPy の" +"全機能を提供する `いくつかの配布物 `_ のリストが" +"あります。" #: ../source/guides/installing-scientific-packages.rst:96 msgid "" @@ -8124,20 +8107,17 @@ msgid "" "package, so that :command:`conda update python` is possible, in contrast to " "pip, which only manages Python packages." msgstr "" -"``conda`` は、" -"複数のバージョンのソフトウェアのバイナリパッケージやその依存先パッケージをイ" -"ンストールして容易に切り替えて使えるようにする (BSDライセンスの) " -"オープンソースのパッケージマネジメントシステム兼環境管理システムです。これは " -"Windows・MacOS・Linuxで動作するクロスプラットフォームのツールです。conda " -"を使えばあらゆる種類のパッケージをまとめたり配布したりすることができて、 " -"Python " -"のパッケージだけには限りません。ネイティブの仮想環境を完全にサポートしていま" -"す。C 言語のライブラリさえも独立した環境を容易に生成できるようにすることで、" -"conda は (仮想) 環境を一級市民にしています。Python " -"で書かれていていますが、Pythonに依存しているわけではありません。conda は " -"Python そのものをパッケージのひとつとして扱うため :command:`conda update " -"python` とすることが可能で、Python のパッケージだけを扱う pip " -"とは対照的です。" +"``conda`` は、複数のバージョンのソフトウェアのバイナリパッケージやその依存先" +"パッケージをインストールして容易に切り替えて使えるようにする (BSDライセンス" +"の) オープンソースのパッケージマネジメントシステム兼環境管理システムです。こ" +"れは Windows・MacOS・Linuxで動作するクロスプラットフォームのツールです。" +"conda を使えばあらゆる種類のパッケージをまとめたり配布したりすることができ" +"て、 Python のパッケージだけには限りません。ネイティブの仮想環境を完全にサ" +"ポートしています。C 言語のライブラリさえも独立した環境を容易に生成できるよう" +"にすることで、conda は (仮想) 環境を一級市民にしています。Python で書かれてい" +"ていますが、Pythonに依存しているわけではありません。conda は Python そのもの" +"をパッケージのひとつとして扱うため :command:`conda update python` とすること" +"が可能で、Python のパッケージだけを扱う pip とは対照的です。" #: ../source/guides/installing-scientific-packages.rst:133 msgid "" @@ -8147,10 +8127,9 @@ msgid "" "Graphical Interface utilities for managing conda environments." msgstr "" "Anaconda `Anaconda `_ は Anaconda, Inc. " -"社が公開した Python " -"配布物です。ビッグデータや科学分野向けの一連のオープンソースパッケージの安定" -"版のコレクションであり、 conda 環境を管理する GUI " -"のユーティリティのコレクションでもあります。" +"社が公開した Python 配布物です。ビッグデータや科学分野向けの一連のオープン" +"ソースパッケージの安定版のコレクションであり、 conda 環境を管理する GUI の" +"ユーティリティのコレクションでもあります。" #: ../source/guides/installing-scientific-packages.rst:135 msgid "" @@ -8159,6 +8138,10 @@ msgid "" "miniconda/>`_, `miniforge `_, and " "`pixi `_." msgstr "" +"Anaconda が提供する完全版の配布物に加えて、 conda パッケージマネージャそれ自" +"身が `miniconda `_ ・ `miniforge " +"`_ ・ `pixi `_ か" +"ら利用可能です。" #: ../source/guides/installing-scientific-packages.rst:138 msgid "" @@ -8167,6 +8150,10 @@ msgid "" "conda-forge channel, which provides a wide variety of pre-built packages, " "and some domain-specific package collections." msgstr "" +"Conda パッケージ群は、Anaconda Inc. がサポートするデフォルトのチャンネルや、" +"広範囲に渡るプリビルドパッケージや幾つかのドメイン特有のパッケージコレクショ" +"ンを提供しているところのコミュニティがサポートする conda-forge チャンネルを含" +"めて、 Anaconda.org の複数のチャンネルから利用可能です。" #: ../source/guides/installing-stand-alone-command-line-tools.rst:4 msgid "Installing stand alone command line tools" @@ -8361,21 +8348,14 @@ msgstr "" "方があります:" #: ../source/guides/installing-using-linux-tools.rst:52 -#, fuzzy -#| msgid "" -#| "Enable the `EPEL repository `_ using " -#| "`these instructions `__. On EPEL 7, you can install pip " -#| "and wheel like so:" msgid "" "Enable the `EPEL repository `_ using " "`these instructions `__. On EPEL 7, you can install pip and wheel like so:" msgstr "" -"`これらの指示 `__ に従って `EPEL リポジトリ `_ を有効にしてください。 EPEL 7 では、pip と " -"wheel をこんなふうにインストールできます:" +"`これらの指示 `__ " +"を使って、 `EPEL リポジトリ `_ を有効に" +"してください。 EPEL 7 では、pip と wheel をこんなふうにインストールできます:" #: ../source/guides/installing-using-linux-tools.rst:61 msgid "" @@ -8745,10 +8725,6 @@ msgid "Install a package" msgstr "パッケージをインストールする" #: ../source/guides/installing-using-pip-and-virtual-environments.rst:203 -#, fuzzy -#| msgid "" -#| "For example,let's install the `Requests`_ library from the :term:`Python " -#| "Package Index (PyPI)`:" msgid "" "For example, let's install the `Requests`_ library from the :term:`Python " "Package Index (PyPI)`:" @@ -8999,7 +8975,7 @@ msgstr "" #: ../source/guides/licensing-examples-and-user-scenarios.rst:6 msgid "Licensing examples and user scenarios" -msgstr "" +msgstr "ライセンシングの例とユーザシナリオ" #: ../source/guides/licensing-examples-and-user-scenarios.rst:9 msgid "" @@ -9009,18 +8985,20 @@ msgid "" "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` をサポートして" +"いることを確認してください。" #: ../source/guides/licensing-examples-and-user-scenarios.rst:18 -#, fuzzy -#| msgid "Examples" msgid "Licensing Examples" -msgstr "例" +msgstr "ライセンシングの例" #: ../source/guides/licensing-examples-and-user-scenarios.rst:23 -#, fuzzy -#| msgid "As an example:" msgid "Basic example" -msgstr "ひとつの例として:" +msgstr "基本的な例" #: ../source/guides/licensing-examples-and-user-scenarios.rst:25 msgid "" @@ -9031,24 +9009,35 @@ msgid "" "automatic inclusion of license-related files matching common patterns, such " "as the :file:`LICENSE` file it uses." msgstr "" +"Setuptools プロジェクトそれ自体は、 `version 75.6.0 `__ 時点" +"で、自身のプロジェクトソースコードのメタデータ内の ``License`` フィールドを" +"使っていません。さらに、共通のパターンにマッチさせることで現在使用している :" +"file:`LICENSE` のようなライセンスに関係するファイル群を自動的に含める自身の仕" +"組みに立脚しているので、以前にはそうしていましたがもはや ``license_file`` / " +"``license_files`` を明示的に指定することもしていません。" #: ../source/guides/licensing-examples-and-user-scenarios.rst:32 msgid "" "It includes the following license-related metadata in its :file:`pyproject." "toml`:" msgstr "" +"以下のようなライセンスに関連するメタデータを :file:`pyproject.toml` の中に含" +"みます:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:42 msgid "The simplest migration to PEP 639 would consist of using this instead:" -msgstr "" +msgstr "PEP 639 への最も単純な移行は、代わりにこれを使うことから構成されます:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:49 msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" 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:" msgstr "" +"配布物パッケージのためのコアとなるメタデータの出力はこんなふうになるでしょう:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:63 msgid "" @@ -9059,12 +9048,16 @@ msgid "" "respective archive and ``{VERSION}`` the version of the Setuptools release " "in the Core Metadata." msgstr "" +":file:`LICENSE` ファイルは、 sdist 内なら :file:`/setuptools-{VERSION}/" +"LICENSE` に、 wheel 内なら :file:`/setuptools-{VERSION}.dist-info/licenses/" +"LICENSE` に、そこから展開されるとインストール先のサイトディレクトリ (例えば :" +"file:`site-packages/`) に置かれることでしょう; ここで :file:`/` はそれぞれの" +"アーカイブのルートディレクトリであり、 ``{VERSION}`` はコアとなるメタデータ内" +"の Setuptools のリリースのバージョンです。" #: ../source/guides/licensing-examples-and-user-scenarios.rst:73 -#, fuzzy -#| msgid "As an example:" msgid "Advanced example" -msgstr "ひとつの例として:" +msgstr "先進的な例" #: ../source/guides/licensing-examples-and-user-scenarios.rst:75 msgid "" @@ -9072,12 +9065,13 @@ msgid "" "that are vendored in the :file:`setuptools/_vendor/` and :file:" "`pkg_resources/_vendor/` directories; specifically:" msgstr "" +"仮に Setuptools が、 :file:`setuptools/_vendor/` と :file:`pkg_resources/" +"_vendor/` のディレクトリ内に第三者のプロジェクトのライセンスを包含していたと" +"しましょう; 特にこの場合は:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:86 -#, fuzzy -#| msgid "The minimum required versions of the respective tools are:" msgid "The license expressions for these projects are:" -msgstr "各ツールは少なくとも次のバージョンでなければなりません:" +msgstr "これらのプロジェクトに対するライセンス条項は:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:95 msgid "" @@ -9085,6 +9079,9 @@ msgid "" "vendored dependencies would contain these metadata, combining all the " "license expressions into one. Such an expression might be:" msgstr "" +"Setuptools 純正のものとベンダーが取り込んだものの両方をカバーするこみいったラ" +"イセンス条項をすべてひとつにまとめて、これらのメタデータを包含することになる" +"でしょう。そのような条項はこんなものになるでしょう:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:103 msgid "" @@ -9096,6 +9093,13 @@ msgid "" "contain the Apache 2.0 and 2-clause BSD license text, and the Packaging " "copyright statement and `license choice notice `__." msgstr "" +"加えて、ライセンスの要求事項次第で、パッケージ内に適切なライセンスファイルが" +"含まれていなければなりません。 :file:`LICENSE` ファイルには Setuptools や " +"``pyparsing`` や ``more_itertools`` や ``ordered-set`` が使用する MIT ライセ" +"ンスとコピーライトが含まれているものと思ってください; そして、:file:" +"`setuptools/_vendor/packaging/` ディレクトリの :file:`LICENSE*` ファイル群に" +"は Apache 2.0 と 2 項の BSD ライセンスの文言があり、Packaging コピーライト文" +"言や `ライセンス選択通知 `__ があるものと思ってください。" #: ../source/guides/licensing-examples-and-user-scenarios.rst:111 msgid "" @@ -9103,25 +9107,33 @@ msgid "" "in the project source tree (relative to the project root and :file:" "`pyproject.toml`):" msgstr "" +"明確にいうと、ライセンスファイル群はプロジェクトソースコードツリー内の以下の " +"(プロジェクトルートと :file:`pyproject.toml` からの相対) パスに位置するものと" +"仮定しています:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:122 msgid "Putting it all together, our :file:`pyproject.toml` would be:" msgstr "" +"これらをすべて一緒にすると、 :file:`pyproject.toml` はこんなふうになるでしょ" +"う:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:133 msgid "" "Or alternatively, the license files can be specified explicitly (paths will " "be interpreted as glob patterns):" -msgstr "" +msgstr "あるいは、別の方法としては、ライセンスファイル群を明示的に示すこともできます " +"(パスはglobパターンとして解釈されるでしょう):" #: ../source/guides/licensing-examples-and-user-scenarios.rst:147 msgid "If our project used :file:`setup.cfg`, we could define this in :" -msgstr "" +msgstr ":file:`setup.cfg` " +"をプロジェクトで使っているなら、こんなふうに定義することができます:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:159 msgid "" "With either approach, the output Core Metadata in the distribution would be:" -msgstr "" +msgstr "どちらのアプローチでも、配布物内のコアとなるメタデータの出力はこんな風になる" +"でしょう:" #: ../source/guides/licensing-examples-and-user-scenarios.rst:170 msgid "" @@ -11413,11 +11425,17 @@ msgstr "" "通常の PyPI のアカウントとは別のものです。" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 +#, fuzzy +#| msgid "" +#| "For security reasons, you must require `manual approval `_ on each run " +#| "for the ``pypi`` environment." msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" "セキュリティ上の理由から、``pypi`` 環境での実行の度に、 `手動での承認 " "`_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "``ライセンス``" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -13434,7 +13462,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 #, fuzzy #| msgid "" #| "If you are using a standard, well-known license, it is not necessary to " @@ -13462,7 +13490,7 @@ msgstr "" "るし、中には内部で認可済みのライセンスでなければソフトウェアを使えない組織も" "あるからです。)" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -13471,7 +13499,7 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 #, fuzzy @@ -13479,59 +13507,59 @@ msgstr "" msgid "``license-files``" msgstr "``ライセンス``" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." @@ -13539,13 +13567,13 @@ msgstr "" "これは、 PyPI 上の検索でキーワードが与えられた時にこのプロジェクトをサジェス" "トするのを助けます。" -#: ../source/guides/writing-pyproject-toml.rst:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "``分類詞 ``" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -13553,7 +13581,7 @@ msgstr "" "プロジェクトに合致する PyPI 分類子 のリスト。 `可能な分類子のリ" "スト `_ を参照してください。" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -13568,7 +13596,7 @@ msgstr "" "トールされ得るのかを実際に制約するためには、 :ref:`requires-python` 引数を" "使ってください。" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " @@ -13578,13 +13606,13 @@ msgstr "" "Upload`` 分類子を使いましょう。``Private ::`` で始まる分類子を付けられたパッ" "ケージを PyPI は常に拒否します。" -#: ../source/guides/writing-pyproject-toml.rst:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." @@ -13592,7 +13620,7 @@ msgstr "" "プロジェクトに関連のある URL のリストで、PyPI 上のプロジェクトページの左サイ" "ドバーに表示されるもの。" -#: ../source/guides/writing-pyproject-toml.rst:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -13600,7 +13628,7 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 #, fuzzy #| msgid "" #| "Note that if the key contains spaces, it needs to be quoted, e.g., " @@ -13615,21 +13643,21 @@ msgstr "" "com\"`` ではなくて ``\"Official Website\" = \"https://example.com\"`` のよう" "に引用符で囲む必要があります。" -#: ../source/guides/writing-pyproject-toml.rst:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -13637,11 +13665,11 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "先進的なプラグイン" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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 " @@ -13652,16 +13680,16 @@ msgstr "" "以下のように ``[project.entry-points]`` のサブテーブルで宣言する必要がありま" "す:" -#: ../source/guides/writing-pyproject-toml.rst:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" "詳しくは、 :ref:`プラグインガイド ` を見てください。" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "完全な例" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " @@ -13671,7 +13699,7 @@ msgstr "" "考えてください。起きる可能性のある問題に関するいくらかの情報が `このブログ記" "事 `_ にあります。" -#: ../source/guides/writing-pyproject-toml.rst:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -18151,7 +18179,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -18161,7 +18189,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -18263,9 +18291,11 @@ msgstr "変更点" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "仕様" @@ -21783,23 +21813,23 @@ msgstr "" "以下に述べる JSON スキーマを ``direct_url.json`` の内容を検証するために使うこ" "とができます:" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "ソースコードアーカイブ:" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "タグおよびコミットハッシュ付きの Git のURL:" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "ローカルディレクトリ:" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "編集可能モード状態にあるローカルディレクトリ:" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." @@ -21807,7 +21837,7 @@ msgstr "" "2020年3月: ``direct_url.json`` メタデータファイルを定義するこの仕様は、 :pep:" "`610` を通じて承認されました。" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -23041,6 +23071,186 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "2022年6月: :pep:`668` を通じてこの仕様が承認されました。" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +#, fuzzy +#| msgid "" +#| "This specification was originally defined in :pep:`518` and :pep:`621`." +msgid "This specification was originally defined in :pep:`592`." +msgstr "この仕様は、元々は :pep:`518` 及び :pep:`621` で定義されました。" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" +"シンプルなリポジトリの中のリンク群は、値を持たないか任意の文字列を値に取る " +"``data-yanked`` アトリビュートを持っていても **構いません** 。 ``data-" +"yanked`` アトリビュートが存在していれば、この特定のリンクによって指し示された" +"ファイルが \"ヤンクされた \" ものだと解釈される **べきであって** 、特" +"定のシナリオ下を除けば一般的にはインストーラによって選択されるべきものではあ" +"りません。" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" +"``data-yanked`` アトリビュートの値は、もし値が存在するなら、そのファイルがヤ" +"ンクされた理由を表現する任意の文字列です。シンプルなリポジトリ API を処理する" +"ツール類は、エンドユーザ向けにその文字列を表示しても **構いません** 。" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" +"ヤンクされたアトリビュートは一旦設定されると変更できないというわけではなく、" +"将来の時点で廃止されても構いません (そして、一旦廃止されても再設定することが" +"できます) 。そういうことですので、 API ユーザは、ヤンクされたファイルが \"ヤ" +"ンク解除\" され (さらに再びヤンクされ) ることに対処でき **なければなりません" +"** 。" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "インストーラ類" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" +"ユーザにとって望ましい経験とは、あるファイルが一旦ヤンクされたら、人間側が今" +"まさにヤンクされたファイルを直接にインストールしようと試みている時、まるでそ" +"のファイルが削除されたかのように失敗することです。しかしながら、その人が少し" +"前の時点で試みた場合には、今回はコンピュータが機械的にオリジナルの順序にした" +"がって今まさにヤンクされたファイルをインストールし、それがヤンクされたファイ" +"ルなどではなかったかのように振る舞うことです。" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" +"インストーラは、ヤンクされたバージョン以外のもので選択上の制約を満足すること" +"が可能なら、ヤンクされたリリース群を **無視しなければならず** 、要求が全く満" +"たされないことを意味する場合でさえもヤンクされたリリースを **拒否しても構いま" +"せん** 。実装では、上記の意図を汲んだポリシーで、かつ、 \"新しい\" 依存関係を" +"訳されたリリースやファイルに課すことを避けポリシーを **選択するべきです** 。" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" +"これが意味するものは、特定のインストーラの全体的な使い方に一番うまく合致する" +"方法を決定するということで、インストーラの裁量に任されています。" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" +"ヤンクされたファイル群は、それが (``.*`` のような範囲を構成するいかなる修正子" +"も付いていない) ``==`` か ``===`` を使って特定のバージョンに \"ピン留め\" さ" +"れたバージョン指定子に合致する唯一のファイルでない限り、常に無視されます。そ" +"れ以外の場合、このバージョン指定子とのマッチングは、ローカルバージョン・ゼロ" +"でのパディング・その他のような事柄について :ref:`バージョン指定子仕様 " +"` にしたがって行われるべきです。" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" +"ヤンクされたファイル群は、 (``Pipfile.lock`` や ``poetry.lock`` のような) " +"ロックファイルがインストールされるべきものとして指定しているものに合致する唯" +"一のファイル出ない限り、常に無視されます。この場合には、ヤンクされたファイル" +"は、何らかの入力ファイルやコマンドからそのロックファイルを作成したり更新した" +"りする場合には、 **使われるべきではありません** 。" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" +"あるインストーラがヤンクされたファイルをいつインストールするのかを決めるにあ" +"たって、ヤンクされたファイルをインストールすると決定した時にインストーラが警" +"告を **発出するべきです** 。そのような警告は、そのファイルがヤンクされた理由" +"についてユーザにより詳しいフィードバックを提供するために、 (もし値があれば) " +"``data-yanked`` アトリビュートの値を **使っても構いません** 。" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "ミラー" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "ミラーは、ヤンクされたファイルを次の二つの方法のうちの一つで扱います:" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" +"\"アクティブ\" なヤンクされたものではないファイル群だけを見せるリポジトリの" +"ビューを提供して、シンプルなリポジトリ API から (ヤンクされたファイル群を) 完" +"全に排除する選択をしても構いません。" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" +"ヤンクされたファイルも表示するとともに、 ``data-yanked`` アトリビュートをもミ" +"ラーするという選択をしても構いません。" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" +"ミラーは、 ``data-yanked`` アトリビュートを同時にミラーするのでなければヤンク" +"されたファイルを **ミラーしてはいけません** 。" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -23690,7 +23900,7 @@ msgstr "" "す。" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "推奨事項" @@ -24647,13 +24857,21 @@ msgid "Compressed Tag Sets" msgstr "圧縮されたタグのセット" #: ../source/specifications/platform-compatibility-tags.rst:352 +#, fuzzy +#| msgid "" +#| "To allow for compact filenames of bdists that work with more than one " +#| "compatibility tag triple, each tag in a filename can instead be a '.'-" +#| "separated, sorted, set of tags. For example, pip, a pure-Python package " +#| "that is written to run under Python 2 and 3 with the same source code, " +#| "could distribute a bdist with the tag ``py2.py3-none-any``. The full list " +#| "of simple tags is::" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" "bdists のコンパクトなファイル名で、互換性のあるタグトリプルが複数ある場合にも" "きちんと動作するものを許容するためには、代わりにファイル名の中のそれぞれのタ" @@ -24884,6 +25102,150 @@ msgstr "2015年11月: :pep:`508` を通じてこの仕様が承認されまし msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "2020年3月: :pep:`610` を通じてこの仕様が承認されました。" +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +#| msgid "Project Summaries" +msgid "Project Status Markers" +msgstr "プロジェクト概要" + +#: ../source/specifications/project-status-markers.rst:9 +#, fuzzy +#| msgid "This specification was originally defined in :pep:`740`." +msgid "This specification was originally defined in :pep:`792`." +msgstr "この仕様は、元々は :pep:`740` で定義されました。" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +#| msgid "Installation" +msgid "Installer semantics: none." +msgstr "インストール" + +#: ../source/specifications/project-status-markers.rst:45 +#, fuzzy +#| msgid "``packages``" +msgid "``archived``" +msgstr "``packages``" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +#| msgid "Installers" +msgid "Installer semantics:" +msgstr "インストーラ類" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +#, fuzzy +#| msgid "Deprecated" +msgid "``deprecated``" +msgstr "非推奨" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "``pyproject.toml`` specification" @@ -25152,6 +25514,7 @@ msgid "``dependency-groups``" msgstr "``依存関係 `_" +msgstr "``direct_url.json``: 詳細については :ref:`direct-url` を見てください" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "パッケージ配布物のファイルフォーマット" @@ -27908,21 +28287,34 @@ msgstr "" "<2119>` で記述された意味に解釈します。" #: ../source/specifications/simple-repository-api.rst:13 +#, fuzzy +#| msgid "" +#| "The interface for querying available package versions and retrieving " +#| "packages from an index server comes in two forms: HTML and JSON." msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" "利用可能なパッケージバージョンを問い合わせたり、インデックスサーバからパッ" "ケージを取り出したりするためのインターフェースは、二つの形式: HTML と JSON で" "もたらされます。" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +#, fuzzy +#| msgid "Base HTML API" +msgid "Base API" msgstr "基本となる HTML API " -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 +#, fuzzy +#| msgid "" +#| "A repository that implements the simple API is defined by its base URL, " +#| "this is the top level URL that all additional URLs are below. The API is " +#| "named the \"simple\" repository due to the fact that PyPI's base URL is " +#| "``https://pypi.org/simple/``." msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." @@ -27933,7 +28325,7 @@ msgstr "" "simple/`` であるという事実に即して、 \"シンプル \" リポジトリと名付け" "られます。" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" @@ -27943,7 +28335,222 @@ msgstr "" "の相対的なものです (したがって、PyPI に関する URL なら、 ``/foo/`` は " "``https://pypi.org/simple/foo/`` のことです。" -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" +msgstr "正規化された名称" + +#: ../source/specifications/simple-repository-api.rst:35 +msgid "" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" +msgstr "" +"この仕様は、 \"正規化された\" プロジェクト名称の概念を参照しています。 :ref:`" +"名称正規化仕様 ` によれば、名称における正当な文字は、 " +"ASCII アルファベット・ ASCII 数字・ ``.`` ・ ``-`` ・ ``_`` だけです。名称" +"は、 `.`` ・ ``-`` ・ ``_`` がいくつ連続していてもそれを単一の ``-`` 文字に置" +"き換え、小文字で統一されているべきです。これは Python の ``re`` モジュールで" +"実装されています::" + +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" +msgstr "PyPI のシンプルな API にバージョンを付与する" + +#: ../source/specifications/simple-repository-api.rst:52 +#, fuzzy +#| msgid "" +#| "This spec proposes the inclusion of a meta tag on the responses of every " +#| "successful request to a simple API page, which contains a name attribute " +#| "of \"pypi:repository-version\", and a content that is a :ref:`version " +#| "specifiers specification ` compatible version number, " +#| "which is further constrained to ONLY be Major.Minor, and none of the " +#| "additional features supported by :ref:`the version specifiers " +#| "specification `." +msgid "" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." +msgstr "" +"この仕様は、シンプルな API へのリクエストが成功するたびにそのレスポンスにメタ" +"タグを含めるように提案するもので、つまり、 \"pypi:repository-version\" という" +"名称のアトリビューションを含み、その内容が :ref:`バージョン指定子仕様 " +"` と互換性のあるバージョン番号であるが Major.Minor だけで" +"あるようにさらに制約されたものであって、 :ref:`バージョン指定子仕様 ` ではサポートされる追加的な機能を一つも含まないものです。" + +#: ../source/specifications/simple-repository-api.rst:60 +#, fuzzy +#| msgid "This would end up looking like::" +msgid "This would end up looking like:" +msgstr "これは、結局こんなふうに見えることでしょう::" + +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" +msgstr "リポジトリのバージョンを翻訳する時:" + +#: ../source/specifications/simple-repository-api.rst:68 +msgid "" +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." +msgstr "" +"メジャーバージョンの増加は、既存のクライアントがその API を意味ある形で使うこ" +"とができるとはもはや期待できないような後方互換性のない変更のシグナルとして使" +"われます。" + +#: ../source/specifications/simple-repository-api.rst:71 +msgid "" +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." +msgstr "" +"マイナーバージョンの増加は、既存のクライアントが依然として意味ある形で API を" +"使うことができることが期待されるような、後方互換性を保つ変更のシグナルとして" +"使われます。" + +#: ../source/specifications/simple-repository-api.rst:75 +msgid "" +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." +msgstr "" +"将来の仕様の選択は、既存のクライアントが引き続き \"意味ある形で\" APIを使うこ" +"とができるであろう、そして、既存の機能に対する追加・修正・削除ができるであろ" +"うという幅広い示唆を越えて、特に後方互換性の有無を構成するものに委ねられてい" +"ます。" + +#: ../source/specifications/simple-repository-api.rst:81 +msgid "" +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" +"メジャーバージョンを増加することは考えられず、将来発生する API の進化は API " +"の進化における異なったメカニズムを通じて実現されるであろうというのが、この仕" +"様の期待するところです。しかしながら、メジャーバージョンは、将来のバージョン" +"との違い (例えば、 /v2/ を使う仮説としてのシンプル API v2 、しかしこれはリポ" +"ジトリバージョンが version >= 2 に設定されれば混乱を招くかもしれません) を明" +"らかにするためにここに含まれているのです。" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:91 +msgid "" +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:96 +msgid "" +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:98 +msgid "" +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" +msgstr "クライアント" + +#: ../source/specifications/simple-repository-api.rst:105 +msgid "" +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." +msgstr "" +"シンプルな API と相互作用するクライアントは、応答を受け取るたびにそのリポジト" +"リバージョンをよく **検査するべき** で、もし存在しなければバージョン 1.0 であ" +"るものと **仮定しなければなりません** 。" + +#: ../source/specifications/simple-repository-api.rst:109 +msgid "" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." +msgstr "" +"想定していたよりも大きなメジャーバージョンに遭遇した時には、クライアントは、" +"ユーザ向けの適切なエラーメッセージと共に **ハードフェイルをしなければなりませ" +"ん** 。" + +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." +msgstr "" +"想定していたよりも大きなマイナーバージョンに遭遇した時には、クライアントは、" +"適切なメッセージと共にユーザに対して **警告するべき** です。" + +#: ../source/specifications/simple-repository-api.rst:115 +msgid "" +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." +msgstr "" +"クライアントは、リポジトリがどんな機能を使っているかを判断するために、さらに" +"機能探索 を **継続しても構いません** 。" + +#: ../source/specifications/simple-repository-api.rst:121 +#, fuzzy +#| msgid "JSON Serialization" +msgid "HTML Serialization" +msgstr "JSON シリアル化" + +#: ../source/specifications/simple-repository-api.rst:125 +#, fuzzy +#| msgid "" +#| "The following constraints apply to all JSON serialized responses " +#| "described in this spec:" +msgid "" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" +msgstr "" +"後述の制約は、この仕様で記述されたすべての JSON シリアル化応答に適用されます:" + +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:129 +msgid "" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" +msgstr "プロジェクトのリスト" + +#: ../source/specifications/simple-repository-api.rst:135 #, fuzzy #| msgid "" #| "Within a repository, the root URL (``/`` for this spec which represents " @@ -27954,9 +28561,7 @@ msgstr "" msgid "" "Within a repository, the root URL (``/`` for this spec which represents the " "base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"project in the repository." msgstr "" "リポジトリ内では、ルート URL (この文脈ではルート URL を" "表現する ``/`` のこと) は、正当な HTML5 ページであってリポジトリ内のプロジェ" @@ -27964,41 +28569,80 @@ msgstr "" "のテキストはプロジェクトの名称でなければならず、 href アトリビュートはそのプ" "ロジェクトの URL にリンクされていなければ **なりません** 。例としては::" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:139 +#, fuzzy +#| msgid "" +#| "Within a repository, the root URL (``/`` for this spec which represents " +#| "the base URL) **MUST** be a valid HTML5 page with a single anchor element " +#| "per project in the repository. The text of the anchor tag **MUST** be the " +#| "name of the project and the href attribute **MUST** link to the URL for " +#| "that particular project. As an example::" +msgid "" +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" +msgstr "" +"リポジトリ内では、ルート URL (この文脈ではルート URL を" +"表現する ``/`` のこと) は、正当な HTML5 ページであってリポジトリ内のプロジェ" +"クト毎にひとつのアンカー要素を持っていなければ **なりません** 。アンカータグ" +"のテキストはプロジェクトの名称でなければならず、 href アトリビュートはそのプ" +"ロジェクトの URL にリンクされていなければ **なりません** 。例としては::" + +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" +msgstr "プロジェクトの詳細" + +#: ../source/specifications/simple-repository-api.rst:158 msgid "" "Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." -msgstr "" -"ルート URL 以下には、リポジトリに含まれる独立のプロジェクトのそれ" -"ぞれに対応する別の URL があります。この URL のフォーマットは ``//`` " -"で、 ```` の部分はそのプロジェクトの正規化された名称で置き換えられる" -"ので、あるプロジェクトの名称が \"HolyGrail\" なら、 URL は ``/holygrail/`` の" -"ようになるでしょう。この URL は、プロジェクトのファイル一つに対してひとつのア" -"ンカーエレメントを伴った正当な HTML5 ページを返さなければなりません。href ア" -"トリビュートは、そのファイルのダウンロードリンクの URL で **なければならず" -"** 、アンカータグのテキストはその URL の最終的なパス構成要素 (ファイル名) に" -"合致して **いなければなりません** 。この URLは、 URL の断片要素の形でハッシュ" -"値を **含んでいるべき** で、その文法は次のようなものです: " -"``#=`` の形で、 ```` は (``sha256`` のように) " -"ハッシュ関数の名前を小文字で表記したものであり、 ```` は16進数にエ" -"ンコードされたダイジェスト (ハッシュ値) です。" +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." +msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:164 +msgid "" +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:167 +msgid "" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:172 +#, fuzzy +#| msgid "" +#| "The repository **SHOULD** provide the hash of the Core Metadata file as " +#| "the ``data-dist-info-metadata`` attribute's value using the syntax " +#| "``=``, where ```` is the lower cased name " +#| "of the hash function used, and ```` is the hex encoded digest. " +#| "The repository **MAY** use ``true`` as the attribute's value if a hash is " +#| "unavailable." +msgid "" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." +msgstr "" +"リポジトリは、 ```` がハッシュ関数の小文字で書いた名称で " +"``hashvalue`` が16進数に符号化されたハッシュ値であるとして " +"``=`` という書式を使って、 ``data-dist-info-metadata`` " +"アトリビュートの値としてコアとなるメタデータのファイルのハッシュ値を **提供す" +"るべきです** 。ハッシュ値を利用できない場合には、リポジトリはアトリビュートの" +"値として ``true`` を **使っても構いません** 。" + +#: ../source/specifications/simple-repository-api.rst:177 msgid "" "In addition to the above, the following constraints are placed on the API:" msgstr "上記に加えて、以下の制約が API に課せられます:" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" "All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " "repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " @@ -28008,7 +28652,7 @@ msgstr "" "ポジトリは ``/`` で終わらない URL の最後に ``/`` を加えたものへリダイレクト " "**するべき** です。" -#: ../source/specifications/simple-repository-api.rst:66 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" "URLs may be either absolute or relative as long as they point to the correct " "location." @@ -28016,7 +28660,7 @@ msgstr "" "URL は、間違いのないロケーションを指し示している限りは絶対パスであっても相対" "パスであっても構いません。" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:186 msgid "" "There are no constraints on where the files must be hosted relative to the " "repository." @@ -28024,7 +28668,7 @@ msgstr "" "ファイル群が置かれている場所が、リポジトリに対して相対的な場所のどこであるか" "については制約条件はありません。" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" "There may be any other HTML elements on the API pages as long as the " "required anchor elements exist." @@ -28032,7 +28676,7 @@ msgstr "" "要求されているアンケー要素が存在している限り、API ページ上にどのような他の " "HTML 要素があっても構いません。" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" "Repositories **MAY** redirect unnormalized URLs to the canonical normalized " "URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " @@ -28043,7 +28687,7 @@ msgstr "" "てもよい) が、クライアントの側ではこのリダイレクト機能に **依存してはならず" "** 、正規化された URL に対してリクエストを **送らなければなりません** 。" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" "Repositories **SHOULD** choose a hash function from one of the ones " "guaranteed to be available via the :py:mod:`hashlib` module in the Python " @@ -28055,7 +28699,7 @@ msgstr "" "点では、 ``md5`` ・ ``sha1`` ・ ``sha224`` ・ ``sha256`` ・ ``sha384`` ・ " "``sha512``)。現時点では、 ``sha256`` の使用が推奨されています。" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" "If there is a GPG signature for a particular distribution file it **MUST** " "live alongside that file with the same name with a ``.asc`` appended to it. " @@ -28068,13 +28712,13 @@ msgstr "" "HolyGrail-1.0.tar.gz`` が存在していて署名が結びついていれば、そのsと名は ``/" "packages/HolyGrail-1.0.tar.gz.asc`` という名前であるはずです。" -#: ../source/specifications/simple-repository-api.rst:91 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" "A repository **MAY** include a ``data-core-metadata`` attribute on a file " "link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 +#: ../source/specifications/simple-repository-api.rst:211 #, fuzzy #| msgid "" #| "The repository **SHOULD** provide the hash of the Core Metadata file as " @@ -28098,25 +28742,25 @@ msgstr "" "るべきです** 。ハッシュ値を利用できない場合には、リポジトリはアトリビュートの" "値として ``true`` を **使っても構いません** 。" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:217 msgid "" "A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " "file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:220 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" "``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" "A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " "with a value of either ``true`` or ``false`` to indicate whether or not " @@ -28127,7 +28771,7 @@ msgstr "" "る ``data-gpg-sig`` アトリビュートをファイルリンクの中に含んでいても **構いま" "せん** 。これを行うリポジトリは、全てのリンクについて **行うべきです** 。" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:232 #, fuzzy #| msgid "" #| "A repository **MAY** include a ``data-requires-python`` attribute on a " @@ -28148,7 +28792,7 @@ msgstr "" "その要求を満足しないバージョンの Python 環境へインストールしている場合には、" "インストールツール群はダウンロードしたものを **無視するべき** です。例えば::" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" "In the attribute value, < and > have to be HTML encoded as ``<`` and " "``>``, respectively." @@ -28156,57 +28800,26 @@ msgstr "" "アトリビュートの値においては、 < や > は順に ``<`` や ``>`` へと HTML " "エンコードされなければなりません。" -#: ../source/specifications/simple-repository-api.rst:128 -msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:139 -msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" -msgstr "正規化された名称" - -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:245 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -"この仕様は、 \"正規化された\" プロジェクト名称の概念を参照しています。 :ref:`" -"名称正規化仕様 ` によれば、名称における正当な文字は、 " -"ASCII アルファベット・ ASCII 数字・ ``.`` ・ ``-`` ・ ``_`` だけです。名称" -"は、 `.`` ・ ``-`` ・ ``_`` がいくつ連続していてもそれを単一の ``-`` 文字に置" -"き換え、小文字で統一されているべきです。これは Python の ``re`` モジュールで" -"実装されています::" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" -msgstr "\"ヤンク \" サポートをシンプルな API に追加する" - -#: ../source/specifications/simple-repository-api.rst:161 -msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +#: ../source/specifications/simple-repository-api.rst:247 +#, fuzzy +#| msgid "" +#| "Links in the simple repository **MAY** have a ``data-yanked`` attribute " +#| "which may have no value, or may have an arbitrary string as a value. The " +#| "presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +#| "indicating that the file pointed to by this particular link has been " +#| "\"Yanked\", and should not generally be selected by an installer, except " +#| "under specific scenarios." +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" "シンプルなリポジトリの中のリンク群は、値を持たないか任意の文字列を値に取る " "``data-yanked`` アトリビュートを持っていても **構いません** 。 ``data-" @@ -28215,315 +28828,78 @@ msgstr "" "定のシナリオ下を除けば一般的にはインストーラによって選択されるべきものではあ" "りません。" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:253 +#, fuzzy +#| msgid "" +#| "The value of the ``data-yanked`` attribute, if present, is an arbitrary " +#| "string that represents the reason for why the file has been yanked. Tools " +#| "that process the simple repository API **MAY** surface this string to end " +#| "users." msgid "" "The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"string that represents the reason for why the file has been yanked." msgstr "" "``data-yanked`` アトリビュートの値は、もし値が存在するなら、そのファイルがヤ" "ンクされた理由を表現する任意の文字列です。シンプルなリポジトリ API を処理する" "ツール類は、エンドユーザ向けにその文字列を表示しても **構いません** 。" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." -msgstr "" -"ヤンクされたアトリビュートは一旦設定されると変更できないというわけではなく、" -"将来の時点で廃止されても構いません (そして、一旦廃止されても再設定することが" -"できます) 。そういうことですので、 API ユーザは、ヤンクされたファイルが \"ヤ" -"ンク解除\" され (さらに再びヤンクされ) ることに対処でき **なければなりません" -"** 。" - -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" -msgstr "インストーラ類" - -#: ../source/specifications/simple-repository-api.rst:182 -msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." -msgstr "" -"ユーザにとって望ましい経験とは、あるファイルが一旦ヤンクされたら、人間側が今" -"まさにヤンクされたファイルを直接にインストールしようと試みている時、まるでそ" -"のファイルが削除されたかのように失敗することです。しかしながら、その人が少し" -"前の時点で試みた場合には、今回はコンピュータが機械的にオリジナルの順序にした" -"がって今まさにヤンクされたファイルをインストールし、それがヤンクされたファイ" -"ルなどではなかったかのように振る舞うことです。" - -#: ../source/specifications/simple-repository-api.rst:189 -msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." -msgstr "" -"インストーラは、ヤンクされたバージョン以外のもので選択上の制約を満足すること" -"が可能なら、ヤンクされたリリース群を **無視しなければならず** 、要求が全く満" -"たされないことを意味する場合でさえもヤンクされたリリースを **拒否しても構いま" -"せん** 。実装では、上記の意図を汲んだポリシーで、かつ、 \"新しい\" 依存関係を" -"訳されたリリースやファイルに課すことを避けポリシーを **選択するべきです** 。" - -#: ../source/specifications/simple-repository-api.rst:196 -msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" -msgstr "" -"これが意味するものは、特定のインストーラの全体的な使い方に一番うまく合致する" -"方法を決定するということで、インストーラの裁量に任されています。" - -#: ../source/specifications/simple-repository-api.rst:200 -msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." -msgstr "" -"ヤンクされたファイル群は、それが (``.*`` のような範囲を構成するいかなる修正子" -"も付いていない) ``==`` か ``===`` を使って特定のバージョンに \"ピン留め\" さ" -"れたバージョン指定子に合致する唯一のファイルでない限り、常に無視されます。そ" -"れ以外の場合、このバージョン指定子とのマッチングは、ローカルバージョン・ゼロ" -"でのパディング・その他のような事柄について :ref:`バージョン指定子仕様 " -"` にしたがって行われるべきです。" - -#: ../source/specifications/simple-repository-api.rst:207 -msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." -msgstr "" -"ヤンクされたファイル群は、 (``Pipfile.lock`` や ``poetry.lock`` のような) " -"ロックファイルがインストールされるべきものとして指定しているものに合致する唯" -"一のファイル出ない限り、常に無視されます。この場合には、ヤンクされたファイル" -"は、何らかの入力ファイルやコマンドからそのロックファイルを作成したり更新した" -"りする場合には、 **使われるべきではありません** 。" - -#: ../source/specifications/simple-repository-api.rst:213 -msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." -msgstr "" -"あるインストーラがヤンクされたファイルをいつインストールするのかを決めるにあ" -"たって、ヤンクされたファイルをインストールすると決定した時にインストーラが警" -"告を **発出するべきです** 。そのような警告は、そのファイルがヤンクされた理由" -"についてユーザにより詳しいフィードバックを提供するために、 (もし値があれば) " -"``data-yanked`` アトリビュートの値を **使っても構いません** 。" - -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" -msgstr "ミラー" - -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" -msgstr "ミラーは、ヤンクされたファイルを次の二つの方法のうちの一つで扱います:" - -#: ../source/specifications/simple-repository-api.rst:225 -msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." -msgstr "" -"\"アクティブ\" なヤンクされたものではないファイル群だけを見せるリポジトリの" -"ビューを提供して、シンプルなリポジトリ API から (ヤンクされたファイル群を) 完" -"全に排除する選択をしても構いません。" - -#: ../source/specifications/simple-repository-api.rst:228 -msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." -msgstr "" -"ヤンクされたファイルも表示するとともに、 ``data-yanked`` アトリビュートをもミ" -"ラーするという選択をしても構いません。" - -#: ../source/specifications/simple-repository-api.rst:231 -msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." -msgstr "" -"ミラーは、 ``data-yanked`` アトリビュートを同時にミラーするのでなければヤンク" -"されたファイルを **ミラーしてはいけません** 。" - -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" -msgstr "PyPI のシンプルな API にバージョンを付与する" - -#: ../source/specifications/simple-repository-api.rst:239 -#, fuzzy -#| msgid "" -#| "This spec proposes the inclusion of a meta tag on the responses of every " -#| "successful request to a simple API page, which contains a name attribute " -#| "of \"pypi:repository-version\", and a content that is a :ref:`version " -#| "specifiers specification ` compatible version number, " -#| "which is further constrained to ONLY be Major.Minor, and none of the " -#| "additional features supported by :ref:`the version specifiers " -#| "specification `." -msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." -msgstr "" -"この仕様は、シンプルな API へのリクエストが成功するたびにそのレスポンスにメタ" -"タグを含めるように提案するもので、つまり、 \"pypi:repository-version\" という" -"名称のアトリビューションを含み、その内容が :ref:`バージョン指定子仕様 " -"` と互換性のあるバージョン番号であるが Major.Minor だけで" -"あるようにさらに制約されたものであって、 :ref:`バージョン指定子仕様 ` ではサポートされる追加的な機能を一つも含まないものです。" - -#: ../source/specifications/simple-repository-api.rst:247 -#, fuzzy -#| msgid "This would end up looking like::" -msgid "This would end up looking like:" -msgstr "これは、結局こんなふうに見えることでしょう::" - -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" -msgstr "リポジトリのバージョンを翻訳する時:" - -#: ../source/specifications/simple-repository-api.rst:255 -msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." -msgstr "" -"メジャーバージョンの増加は、既存のクライアントがその API を意味ある形で使うこ" -"とができるとはもはや期待できないような後方互換性のない変更のシグナルとして使" -"われます。" - #: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -"マイナーバージョンの増加は、既存のクライアントが依然として意味ある形で API を" -"使うことができることが期待されるような、後方互換性を保つ変更のシグナルとして" -"使われます。" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -"将来の仕様の選択は、既存のクライアントが引き続き \"意味ある形で\" APIを使うこ" -"とができるであろう、そして、既存の機能に対する追加・修正・削除ができるであろ" -"うという幅広い示唆を越えて、特に後方互換性の有無を構成するものに委ねられてい" -"ます。" #: ../source/specifications/simple-repository-api.rst:268 -msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." -msgstr "" -"メジャーバージョンを増加することは考えられず、将来発生する API の進化は API " -"の進化における異なったメカニズムを通じて実現されるであろうというのが、この仕" -"様の期待するところです。しかしながら、メジャーバージョンは、将来のバージョン" -"との違い (例えば、 /v2/ を使う仮説としてのシンプル API v2 、しかしこれはリポ" -"ジトリバージョンが version >= 2 に設定されれば混乱を招くかもしれません) を明" -"らかにするためにここに含まれているのです。" - -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:278 -msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:283 -msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" -msgstr "クライアント" - -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -"シンプルな API と相互作用するクライアントは、応答を受け取るたびにそのリポジト" -"リバージョンをよく **検査するべき** で、もし存在しなければバージョン 1.0 であ" -"るものと **仮定しなければなりません** 。" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -"想定していたよりも大きなメジャーバージョンに遭遇した時には、クライアントは、" -"ユーザ向けの適切なエラーメッセージと共に **ハードフェイルをしなければなりませ" -"ん** 。" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -"想定していたよりも大きなマイナーバージョンに遭遇した時には、クライアントは、" -"適切なメッセージと共にユーザに対して **警告するべき** です。" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -"クライアントは、リポジトリがどんな機能を使っているかを判断するために、さらに" -"機能探索 を **継続しても構いません** 。" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "シンプルな API で配布物のメタデータを提供する" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -28538,7 +28914,7 @@ msgstr "" "コアとなるメタデータのファイルを **持っていなければならない** ことを示しま" "す。" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -28558,7 +28934,7 @@ msgstr "" "HTML API の仕様 ` で GPG 署名のファイルの場所の指" "定するやり方と似ています。" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -28574,11 +28950,11 @@ msgstr "" "るべきです** 。ハッシュ値を利用できない場合には、リポジトリはアトリビュートの" "値として ``true`` を **使っても構いません** 。" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "後方互換性" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " @@ -28588,7 +28964,7 @@ msgstr "" "は、配布物をダウンロードするというその時点の動作を反転して、メタデータを調べ" "るという動作に変更することが期待されています。" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -28601,11 +28977,11 @@ msgstr "" "ます。これは、先の ``data-`` アトリビュート追加の際に、既存のツール群が期待さ" "れた動作と似ています。" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "Python パッケージインデックス向けのJSON ベースのシンプルな API" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -28617,7 +28993,7 @@ msgstr "" "api-base>` を別にして) すべてのレスポンスが `JSON `_ " "を用いてシリアライズされているべきであると指定しています。" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -28633,7 +29009,7 @@ msgstr "" "よびサーバが提供するべき正しいシリアライズのフォーマット、即ち HTML もしくは " "JSON を選択できるようにしています。" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -28650,7 +29026,7 @@ msgstr "" "ンに変更を加えることはなく、代わりにどのようにして JSON にシリアライズするの" "かを述べるに留めています。" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -28662,7 +29038,7 @@ msgstr "" "はや期待できないようになる新しいフォーマットをもたらすような変更があった場合" "には、メジャーバージョン番号を **増加させなければなりません** 。" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " @@ -28672,7 +29048,7 @@ msgstr "" "存のクライアントが意味ある形でそのフォーマットを理解できる状態が継続すると期" "待されるであろうという時に限って **増加されなければなりません** 。" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " @@ -28682,7 +29058,7 @@ msgstr "" "う結果に陥らないような、かつ、機能の追加や削除に相当しないような変更は、バー" "ジョン番号の変更を伴わずに行っても構いません。" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " @@ -28693,7 +29069,7 @@ msgstr "" "変更をもたらすような将来の仕様に、余地を残すことが最善であると信じられている" "からです。" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -28707,7 +29083,7 @@ msgstr "" "すが、ある機能がそれぞれのフォーマットにシリアル化されるやり方の詳細は、その" "機能が存在するかしないかを含めて、異なっていても構いません。" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " @@ -28718,28 +29094,33 @@ msgstr "" "アル化フォーマットにシリアライズされるものであると考えられるべきであるという" "ことです。" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "JSON シリアル化" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 +#, fuzzy +#| msgid "" +#| "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " +#| "serialization format for the already existing API." msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" ":ref:`基本となる HTML API の仕様 ` からの URL の" "構造は依然として適用されます、というのは、この仕様は既に存在する API にシリア" "ル化フォーマットを付け足すだけだからです。" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" "後述の制約は、この仕様で記述されたすべての JSON シリアル化応答に適用されます:" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." @@ -28747,7 +29128,7 @@ msgstr "" "すべての JSON 応答は、配列やその他の型ではなく *常に* JSON オブジェクトである" "ことでしょう。" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 #, fuzzy #| msgid "" #| "While JSON doesn't natively support an URL type, any value that " @@ -28765,7 +29146,7 @@ msgstr "" "り絶対パスであっても相対パスであっても構いません。相対パスの場合には、恰も " "HTML であるかのように、現在の URL に対する相対パスになっています。" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." @@ -28774,7 +29155,7 @@ msgstr "" "し、クライアントは自身が理解しないキー群については **無視しなければなりません" "** 。" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." @@ -28782,7 +29163,7 @@ msgstr "" "あらゆる JSON 応答は、その応答の内容ではなく応答それ自身に関係する情報を含む " "``meta`` キーを持つことでしょう。" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification ` の ``Major.Minor`` の形のバージョン番号を文字列として値に取るよ" "うな ``meta.api-version`` キーを持つことでしょう。" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." @@ -28804,7 +29185,7 @@ msgstr "" ":ref:`基本となる HTML API の仕様 ` のすべての要求" "事項のうちの HTML に特化したもの以外は、依然として適用されます。" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." @@ -28813,11 +29194,7 @@ msgstr "" "ライベートなものとして予約されています。将来の標準において、このようなキーに" "意味を付与することはありません。" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "プロジェクトのリスト" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" @@ -28825,7 +29202,7 @@ msgstr "" "(ベース URL を表現する) この仕様でのルート URL ``/`` " "は、 JSON にエンコードされた辞書であって、二つのキーを持つでしょう:" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." @@ -28833,20 +29210,20 @@ msgstr "" "``projects``: 各エントリがディレクトリで単独のキー ``name`` を持つような配列" "で、(そのキーの値は) プロジェクトの名称を表す文字列です。" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" "``meta``: `先述の通り `__ の一般的な応答メタデータ。" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "ひとつの例として:" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -28861,7 +29238,7 @@ msgstr "" "実装において異なる選択を行うことがあり、その選択によって非正規化名称か正規化" "名称かは当該リポジトリの実装の詳細に依存します。" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, the ``requires-python`` key does not require " @@ -29049,7 +29452,7 @@ msgstr "" "requires-python`` とは異なって、 ``requires-python`` キーは、JSON が自然に要" "求することを除けば、特別なエスケープを要求しません。" -#: ../source/specifications/simple-repository-api.rst:546 +#: ../source/specifications/simple-repository-api.rst:558 #, fuzzy #| msgid "" #| "``dist-info-metadata``: An **optional** key that indicates that metadata " @@ -29075,7 +29478,7 @@ msgstr "" "数にエンコードしたダイジェストへの対応をマッピングする辞書か、のいずれかで **" "なければなりません** 。" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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 " @@ -29084,7 +29487,7 @@ msgstr "" "これがブーリアンの代わりにハッシュ辞書である時には、 ``hashes`` キーが true " "を値に取る場合と同じ要求事項と推奨事項の全てが、このキーにも課されます。" -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:570 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 " @@ -29094,7 +29497,7 @@ msgstr "" "ないかもしれません。このキーの値が真である場合はメタデータファイルが存在し、" "値が偽の場合には存在しません。" -#: ../source/specifications/simple-repository-api.rst:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." @@ -29102,25 +29505,25 @@ msgstr "" "サーバ群は、可能であれば、メタデータファイルのハッシュを利用可能とすることが" "推奨されています。" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -29134,15 +29537,23 @@ msgstr "" "います。このキーが存在しない場合は、署名はあるかもしれませんし、ないかもしれ" "ません。" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 +#, fuzzy +#| 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 indicate that a file has been yanked with a specific reason. If " +#| "the ``yanked`` key is present and is a truthy value, then it **SHOULD** " +#| "be interpreted as indicating that the file pointed to by the ``url`` " +#| "field has been \"Yanked\" as per :ref:`the API yank specification `." 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" "``yanked``: **オプション** のキーで、当該ファイルがヤンクされたものか否かを示" "すブーリアンか、または、ファイルがヤンクされるに至った特定の理由を示す任意の" @@ -29151,7 +29562,7 @@ msgstr "" "様 ` にある通りに \"ヤンク\" されたことを示しま" "す。" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 #, fuzzy #| msgid "" #| "``size``: This field is mandatory. It MUST contain an integer which is " @@ -29163,18 +29574,18 @@ msgstr "" "``size``: このフィールドは必須のものです。ファイルサイズをバイト単位で表した" "整数が含まれていなければなりません。" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 #, fuzzy #| msgid "" #| "``upload-time``: This field is optional. If present, it MUST contain a " @@ -29201,11 +29612,11 @@ msgstr "" "せん。サーバ側がファイルのアップロード日時を記録していない場合は、 ``upload-" "time`` キーを省略しても構いません。" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -29213,11 +29624,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -29304,11 +29715,11 @@ msgstr "" "をサポートするために、この仕様では、さらに、 ``text/html`` を ``application/" "vnd.pypi.simple.v1+html`` コンテント型へのエイリアスであると定義しています。" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "バージョン + フォーマットの選択" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -29322,7 +29733,7 @@ msgstr "" "ることなしに、どんな API の可能な新しいメジャーバージョンでも追加することがで" "きれば利益があることでしょう。" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_ の使用を標準化します。" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" @@ -29340,7 +29751,7 @@ msgstr "" "この仕様では、サーバ主導のコンテントネゴシエーションについて完全にすべてを記" "述することはありませんが、流れは大まかに次のようになります:" -#: ../source/specifications/simple-repository-api.rst:705 +#: ../source/specifications/simple-repository-api.rst:724 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." @@ -29348,7 +29759,7 @@ msgstr "" "理解できるコンテント型を全て``Accept`` ヘッダに列挙した HTTP リクエストをクラ" "イアントが作成します。" -#: ../source/specifications/simple-repository-api.rst:707 +#: ../source/specifications/simple-repository-api.rst:726 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 " @@ -29358,7 +29769,7 @@ msgstr "" "のコンテント型を使って応答を返します (``Accept`` ヘッダが欠落している場合は " "``Accept: */*`` であるものとして扱います) 。" -#: ../source/specifications/simple-repository-api.rst:710 +#: ../source/specifications/simple-repository-api.rst:729 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 " @@ -29368,7 +29779,7 @@ msgstr "" "は、どのように応答するかについてサーバは3個の異なるオプションから選択するこ" "とができます:" -#: ../source/specifications/simple-repository-api.rst:714 +#: ../source/specifications/simple-repository-api.rst:733 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." @@ -29376,7 +29787,7 @@ msgstr "" "クライアントが要求したものではないデフォルトのコンテント型を選択して、それを" "使って応答を返すこと。" -#: ../source/specifications/simple-repository-api.rst:716 +#: ../source/specifications/simple-repository-api.rst:735 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 " @@ -29386,7 +29797,7 @@ msgstr "" "利用可能なものがないことを示し、サーバとしてはデフォルトのコンテント型を選択" "して応答することができないかしたくないことを示すこと。" -#: ../source/specifications/simple-repository-api.rst:719 +#: ../source/specifications/simple-repository-api.rst:738 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." @@ -29394,7 +29805,7 @@ msgstr "" "HTTP の ``300 Multiple Choices`` 応答を返して、選択できるかもしれないすべての" "可能な応答のリストを含めておくこと。" -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." @@ -29402,7 +29813,7 @@ msgstr "" "サーバが返すかもしれない異なる応答のタイプを取り扱ってクライアントは応答を解" "釈します。" -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -29414,7 +29825,7 @@ msgstr "" "アント側がそのクライアントにとって最も意味を為す方法であればどんなものでも可" "能な応答の全てを取り扱う準備を **しておくべきだ** とは指定しません。" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -29431,7 +29842,7 @@ msgstr "" "型を **理解できるであろう** とは思われず、したがって、この応答は ``406 Not " "Acceptable`` エラーと同じ扱いを受けるのが精々であろうと思われます。" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 #, fuzzy #| msgid "" #| "This spec **does** require that if the meta version ``latest`` is being " @@ -29454,7 +29865,7 @@ msgstr "" "には ``application/vnd.pypi.simple.v1+json`` を値とする ``Content-Type`` が" "入っていなければならないということです) 。" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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 " @@ -29464,19 +29875,19 @@ msgstr "" "ンマで区切られたリストに列挙したものです。まさに要求されているところのコンテ" "ント型のそれぞれについて3個の異なるフォーマットをサポートしています:" -#: ../source/specifications/simple-repository-api.rst:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "``$type/$subtype``" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "``$type/*``" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "``*/*``" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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 " @@ -29486,7 +29897,7 @@ msgstr "" "も役に立つのは ``$type/$subtype`` で、望みのバージョンとフォーマットを実際に" "指定する唯一の方法だからです。" -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -29502,7 +29913,7 @@ msgstr "" "mozilla.org/en-US/docs/Glossary/Quality_values>`_ の文法を使っても構いませ" "ん。" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -29517,7 +29928,7 @@ msgstr "" "(quality 値) のエントリがより低い品質のものよりも優先され、q 値を持たないもの" "はデフォルトで ``1`` であると解釈されます。" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -29529,7 +29940,7 @@ msgstr "" "** コンテント型で返答しても構わないということを、クライアントは心に留めておく" "べきです。" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -29547,11 +29958,11 @@ msgstr "" "index/collector.py#L123-L150>`_ を強制していますので、実際に何かを壊すリスク" "は低いでしょう。" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "クライアントがどのように運用できるかの例は次のように見えるでしょう:" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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 " @@ -29561,11 +29972,11 @@ msgstr "" "``Accept`` ヘッダから望まないコンテント型を単に取り除くでしょうし、(望まない" "ものを) 受け取ったらエラーにすることでしょう。" -#: ../source/specifications/simple-repository-api.rst:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "代わりの交渉機構 " -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -29579,18 +29990,18 @@ msgstr "" "そのような場合向けに、この仕様には、 *オプションとして* 代わりに使っても構わ" "ない代わりの交渉機構 があります。" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "URL パラメータ" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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 " @@ -29600,7 +30011,7 @@ msgstr "" "です。複数のコンテント型を渡すことやワイルドカード、quality 値などはサポート" "されて **いません** 。" -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -29613,7 +30024,7 @@ msgstr "" "図したもの、ないし、説明文書やノートから特定の version+format にリンクするこ" "とができるようにすることを意図したものです。" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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." @@ -29621,7 +30032,7 @@ msgstr "" "このパラメータをサポートしないサーバの側では、これの存在時にはエラーを返すこ" "とを選択しても構いませんし、単にその存在を無視しても構いません。" -#: ../source/specifications/simple-repository-api.rst:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -29638,11 +30049,11 @@ msgstr "" "``303 Multiple Choices`` 、ないし、応答のデフォルトの型) のどれでもひとつを選" "択しても構いません。" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "エンドポイントの設定" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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 " @@ -29652,7 +30063,7 @@ msgstr "" "エーションを使用することに伴う自然な結果であり、利用可能なコンテント型のいず" "れかを自身のデフォルトとしてサーバが選択することを許すものです。" -#: ../source/specifications/simple-repository-api.rst:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -29664,7 +30075,7 @@ msgstr "" "ように明示的に要求するのであれば、それはサポートされているコンフィグレーショ" "ンのひとつです。" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -29681,7 +30092,7 @@ msgstr "" "エストした時に、サーバはそれを無視して当該エンドポイントに対応するコンテント" "型を返すことができます。" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -29693,11 +30104,11 @@ msgstr "" "すし、そのサーバへのリクエストを作成する時に正しいコンテント型 **だけ** を含" "んだ ``Accept`` ヘッダを発出することができます。" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "TUF サポート - PEP 458" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -29715,7 +30126,7 @@ msgstr "" "ハッシュが相異なるような複数の異なる表現形式をターゲットが持っているかもしれ" "ないという事実を TUF クライアントが扱えないからです。" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -29727,7 +30138,7 @@ msgstr "" "ることを要求し、換言すれば、 ``simple/PROJECT/.`` のようなパスは技術的には" "ディレクトリを指し示しているので受け入れ不可能です。" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -29741,7 +30152,7 @@ msgstr "" "ます。これと同じことが、 ``Accept`` ヘッダのような実際の HTTP リクエスト他の" "側面についても当てはまります。" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -29753,7 +30164,7 @@ msgstr "" "が、この仕様では、 :pep:`458` のメタデータの中にこれをどれほど正確に表現する" "のかについての決断を行うことを遅延させているのです。" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -29770,7 +30181,7 @@ msgstr "" "pypi.v1.html`` のように、 v1 の JSON フォーマットは ``simple/PROJECT/vnd." "pypi.simple.v1.json`` のようになることでしょう。" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " @@ -29780,7 +30191,7 @@ msgstr "" "のエイリアスであることから、 TUF を通じて相互作用する時にはもっと明示的な名称" "に正規化する方が最大の意味をなすことになるでしょう。" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." @@ -29788,7 +30199,7 @@ msgstr "" "``latest`` メタバージョンがターゲットの中に含まれているべきではないのと同様" "に、明示的に宣言されたバージョンだけがサポートされるべきです。" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -29799,7 +30210,7 @@ msgstr "" "と仕様の執筆者たちが信じるものを表現していますが、しかし、これらの決定に合致" "させるための要求事項としてはいかなるものも **表現していません** 。" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -29812,11 +30223,11 @@ msgstr "" "択されています。加えて、クライアント側が最善の選択を行うようにと試みるガード" "レールを API が提供するように試みてきました。" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "サーバには次のことが推奨されます:" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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 " @@ -29826,7 +30237,7 @@ msgstr "" "くは、少なくとも HTML 応答を用いる非自明のトラフィックを受け取る限り、この仕" "様の中で記述される3個のコンテント型の全てをサポートすること。" -#: ../source/specifications/simple-repository-api.rst:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -29837,7 +30248,7 @@ msgstr "" "いような ``Accept`` ヘッダに遭遇した時、 ``300 Multiple Choice`` 応答を返すべ" "きではなく、その代わりに ``406 Not Acceptable`` 応答を返すべきです。" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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." @@ -29846,7 +30257,7 @@ msgstr "" "そのエンドポイントが期待しているコンテント型で ``200 Ok`` を返したいと考える" "べきです。" -#: ../source/specifications/simple-repository-api.rst:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -29860,11 +30271,11 @@ msgstr "" "リクエストの特質を考慮に入れて、最も高いバージョンを選択するべきであり、 " "``text/html`` コンテント型の使用は最後の逃避先とするべきです。" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "クライアント側には次のことが推奨されます:" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." @@ -29872,7 +30283,7 @@ msgstr "" "それが合理的に実行可能である限り、サーバ側が駆動するコンテンツネゴシエーショ" "ンを使ってこの仕様に記述された3個のコンテント型の全てをサポートすること。" -#: ../source/specifications/simple-repository-api.rst:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." @@ -29880,7 +30291,7 @@ msgstr "" "``Accept`` ヘッダを構築する時、サポートしているコンテント型の全てを含めるこ" "と。" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -29894,7 +30305,7 @@ msgstr "" "コンテント型にはクオリティ優先度 を含めるべきではありませ" "ん。" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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 " @@ -29904,7 +30315,7 @@ msgstr "" "型であるという場合を除けば、伝統的な ``text/html`` コンテント型には ``;" "q=0.01`` を含めることが推奨されるということです。" -#: ../source/specifications/simple-repository-api.rst:984 +#: ../source/specifications/simple-repository-api.rst:1003 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." @@ -29912,7 +30323,7 @@ msgstr "" "通常操作では ``latest`` メタバージョンを使うのではなくて、希求しているバー" "ジョンがどれであるかを明示的に選択すること。" -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." @@ -29920,19 +30331,19 @@ msgstr "" "応答の ``Content-Type`` を調べて、こちらが期待しているものに合致していること" "を確認すること。" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "2015年9月: :pep:`503` で HTML フォーマットの初期フォーム" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 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:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "2019年5月: :pep:`592` で \"ヤンク \" サポート" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" @@ -29940,14 +30351,14 @@ msgstr "" "2020年7月: :pep:`629` で、 API バージョン付け慣行とメタデータ、 HTML フォー" "マットを API v1.として宣言" -#: ../source/specifications/simple-repository-api.rst:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" "2021年5月: :pep:`658` で、パッケージとは独立にパッケージのメタデータを提供" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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`" @@ -29955,7 +30366,7 @@ msgstr "" "2022年5月: :pep:`691` により、クライアント側が選択する機構とともに JSON " "フォーマットの初期の形、両フォーマットを API v1 として宣言" -#: ../source/specifications/simple-repository-api.rst:1004 +#: ../source/specifications/simple-repository-api.rst:1023 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" @@ -29963,7 +30374,7 @@ msgstr "" "2022年10月: :pep:`700` により、 JSON フォーマットにおけるプロジェクトバージョ" "ン・ファイルサイズ・アップロード日時" -#: ../source/specifications/simple-repository-api.rst:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" @@ -29971,7 +30382,7 @@ msgstr "" "2023年6月: :pep:`714` により、パッケージから独立したパッケージメタデータを提" "供するフィールドを名称変更" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 #, fuzzy #| msgid "" #| "October 2022: project versions and file size and upload-time in the JSON " @@ -29983,6 +30394,23 @@ msgstr "" "2022年10月: :pep:`700` により、 JSON フォーマットにおけるプロジェクトバージョ" "ン・ファイルサイズ・アップロード日時" +#: ../source/specifications/simple-repository-api.rst:1028 +#, fuzzy +#| msgid "" +#| "October 2022: project versions and file size and upload-time in the JSON " +#| "format, in :pep:`700`" +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" +"2022年10月: :pep:`700` により、 JSON フォーマットにおけるプロジェクトバージョ" +"ン・ファイルサイズ・アップロード日時" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "ソースコード配布物のフォーマット" @@ -34097,6 +34525,13 @@ msgstr "" "可能な Python パッケージとしての配布をサポートしているという仮定を置くことを" "避けています。" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "Python のプロジェクトをパッケージングする" @@ -34879,6 +35314,42 @@ msgstr "" "りなのであれば、 *通常のパッケージ* と (空のファイルだとしても) ``__init__." "py`` から離れないことをお薦めします。" +#, fuzzy +#~| msgid ":ref:`pyproject-toml-spec`" +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr ":ref:`pyproject-toml-spec`" + +#~ msgid "" +#~ "Below the root URL is another URL for each individual project contained " +#~ "within a repository. The format of this URL is ``//`` where the " +#~ "```` is replaced by the normalized name for that project, so a " +#~ "project named \"HolyGrail\" would have a URL like ``/holygrail/``. This " +#~ "URL must respond with a valid HTML5 page with a single anchor element per " +#~ "file for the project. The href attribute **MUST** be a URL that links to " +#~ "the location of the file for download, and the text of the anchor tag " +#~ "**MUST** match the final path component (the filename) of the URL. The " +#~ "URL **SHOULD** include a hash in the form of a URL fragment with the " +#~ "following syntax: ``#=``, where ```` is " +#~ "the lowercase name of the hash function (such as ``sha256``) and " +#~ "```` is the hex encoded digest." +#~ msgstr "" +#~ "ルート URL 以下には、リポジトリに含まれる独立のプロジェクトのそ" +#~ "れぞれに対応する別の URL があります。この URL のフォーマットは ``/" +#~ "/`` で、 ```` の部分はそのプロジェクトの正規化された名称" +#~ "で置き換えられるので、あるプロジェクトの名称が \"HolyGrail\" なら、 URL " +#~ "は ``/holygrail/`` のようになるでしょう。この URL は、プロジェクトのファイ" +#~ "ル一つに対してひとつのアンカーエレメントを伴った正当な HTML5 ページを返さ" +#~ "なければなりません。href アトリビュートは、そのファイルのダウンロードリン" +#~ "クの URL で **なければならず** 、アンカータグのテキストはその URL の最終的" +#~ "なパス構成要素 (ファイル名) に合致して **いなければなりません** 。この URL" +#~ "は、 URL の断片要素の形でハッシュ値を **含んでいるべき** で、その文法は次" +#~ "のようなものです: ``#=`` の形で、 ```` は " +#~ "(``sha256`` のように) ハッシュ関数の名前を小文字で表記したものであり、 " +#~ "```` は16進数にエンコードされたダイジェスト (ハッシュ値) です。" + +#~ msgid "Adding \"Yank\" Support to the Simple API" +#~ msgstr "\"ヤンク \" サポートをシンプルな API に追加する" + #~ msgid "Signing the distribution packages" #~ msgstr "配布パッケージに署名する" @@ -35882,9 +36353,6 @@ msgstr "" #~ "これは最も単純なバージョン付与方法で、リリースのたびに増加する単一の番号で" #~ "構成します。" -#~ msgid "Hybrid schemes" -#~ msgstr "混成型の方法" - #~ msgid "Pre-release versioning" #~ msgstr "リリース前のバージョン付与方式" diff --git a/locales/kab/LC_MESSAGES/messages.po b/locales/kab/LC_MESSAGES/messages.po index a175db234..505ada97e 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-06-16 19:01+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Kabyle `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9928,32 +9928,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9962,7 +9970,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9986,83 +9994,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10071,26 +10079,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10098,28 +10106,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10127,33 +10135,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13528,7 +13536,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13538,7 +13546,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13631,9 +13639,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16493,29 +16503,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17328,6 +17338,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17903,7 +18040,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18693,10 +18830,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18859,6 +18996,142 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +#| msgid "Installer" +msgid "Installer semantics:" +msgstr "Amesbedday" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +#, fuzzy +#| msgid "Deprecated" +msgid "``deprecated``" +msgstr "D aqbur" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19108,6 +19381,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19840,7 +20114,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19855,7 +20129,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19870,14 +20144,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21267,6 +21537,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21306,433 +21592,427 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 -msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:115 +msgid "" +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:121 +#, fuzzy +#| msgid "Translations" +msgid "HTML Serialization" +msgstr "Tisuqilin" + +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21741,7 +22021,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21753,7 +22033,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21763,18 +22043,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21782,11 +22062,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21794,7 +22074,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21804,7 +22084,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21814,7 +22094,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21822,28 +22102,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21852,37 +22132,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21890,19 +22170,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21961,7 +22237,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22022,23 +22320,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22047,14 +22345,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22064,7 +22362,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22072,14 +22370,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22089,45 +22387,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22136,35 +22434,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22173,11 +22470,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22185,11 +22482,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22252,11 +22549,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22265,65 +22562,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22331,7 +22628,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22342,7 +22639,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22351,33 +22648,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22387,7 +22684,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22397,7 +22694,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22405,7 +22702,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22416,22 +22713,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22440,25 +22737,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22466,13 +22763,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22482,18 +22779,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22501,7 +22798,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22511,7 +22808,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22519,11 +22816,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22534,7 +22831,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22542,7 +22839,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22551,7 +22848,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22559,7 +22856,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22569,20 +22866,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22590,7 +22887,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22599,18 +22896,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22618,13 +22915,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22633,23 +22930,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22658,73 +22955,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25731,6 +26039,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/ko/LC_MESSAGES/messages.po b/locales/ko/LC_MESSAGES/messages.po index 2d928a55e..2edd3de67 100644 --- a/locales/ko/LC_MESSAGES/messages.po +++ b/locales/ko/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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2024-11-03 06:00+0000\n" "Last-Translator: 황인아 \n" "Language-Team: Korean `. You can install or upgrade nox using ``pip``:" msgstr "" ":doc:`Nox `. ``pip``를 사용하여 nox를 설치하거나 업그레이드할 수 " "있습니다." -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -10025,32 +10025,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -10059,7 +10067,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10083,83 +10091,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10168,26 +10176,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10195,28 +10203,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10224,33 +10232,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13627,7 +13635,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13637,7 +13645,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13730,9 +13738,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16605,29 +16615,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17443,6 +17453,135 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +#, fuzzy +#| msgid "Translations" +msgid "Installers" +msgstr "번역" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -18020,7 +18159,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18812,10 +18951,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18978,6 +19117,144 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +#| msgid "Project name" +msgid "Project Status Markers" +msgstr "프로젝트 이름" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +#| msgid "Translations" +msgid "Installer semantics: none." +msgstr "번역" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +#| msgid "Translations" +msgid "Installer semantics:" +msgstr "번역" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy msgid "``pylock.toml`` Specification" @@ -19228,6 +19505,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19964,7 +20242,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19979,7 +20257,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19994,14 +20272,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21392,6 +21666,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21433,436 +21723,431 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +#, fuzzy +msgid "Normalized Names" +msgstr "번역" + +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 -msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"In addition to the above, the following constraints are placed on the API:" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 -msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" #: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" #: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 -msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 -msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 -msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 +#: ../source/specifications/simple-repository-api.rst:121 #, fuzzy -msgid "Normalized Names" +msgid "HTML Serialization" msgstr "번역" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +#, fuzzy +#| msgid "Project" +msgid "Project List" +msgstr "프로젝트" + +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 #, fuzzy -#| msgid "Translations" -msgid "Installers" -msgstr "번역" +#| msgid "Project name" +msgid "Project Detail" +msgstr "프로젝트 이름" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:158 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:183 +msgid "" +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:202 +msgid "" +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:211 +msgid "" +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:220 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:242 +msgid "" +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:245 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:247 +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:253 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:261 +msgid "" +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:288 +msgid "" +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21871,7 +22156,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21883,7 +22168,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21893,18 +22178,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21912,11 +22197,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21924,7 +22209,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21934,7 +22219,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21944,7 +22229,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21952,28 +22237,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21982,38 +22267,38 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 #, fuzzy msgid "JSON Serialization" msgstr "번역" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -22021,19 +22306,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -#, fuzzy -#| msgid "Project" -msgid "Project List" -msgstr "프로젝트" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -22094,7 +22373,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22157,23 +22456,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22182,14 +22481,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22199,7 +22498,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22207,14 +22506,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22224,45 +22523,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22271,35 +22570,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22308,11 +22606,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22320,11 +22618,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22387,12 +22685,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 #, fuzzy msgid "Version + Format Selection" msgstr "번역" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22401,65 +22699,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22467,7 +22765,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22478,7 +22776,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22487,33 +22785,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22523,7 +22821,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22533,7 +22831,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22541,7 +22839,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22552,22 +22850,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22576,25 +22874,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22602,13 +22900,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22618,18 +22916,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22637,7 +22935,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22647,7 +22945,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22655,11 +22953,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22670,7 +22968,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22678,7 +22976,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22687,7 +22985,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22695,7 +22993,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22705,20 +23003,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22726,7 +23024,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22735,18 +23033,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22754,13 +23052,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22769,23 +23067,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22794,73 +23092,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25877,6 +26186,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/lzh/LC_MESSAGES/messages.po b/locales/lzh/LC_MESSAGES/messages.po index 8a0f88a95..16c03efa6 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2024-01-31 06:01+0000\n" "Last-Translator: maker \n" "Language-Team: Chinese (Literary) `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9931,32 +9931,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9965,7 +9973,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9989,83 +9997,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10074,26 +10082,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10101,28 +10109,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10130,33 +10138,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13531,7 +13539,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13541,7 +13549,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13634,9 +13642,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16498,29 +16508,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17333,6 +17343,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17908,7 +18045,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18698,10 +18835,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18864,6 +19001,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19113,6 +19382,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19845,7 +20115,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19860,7 +20130,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19875,14 +20145,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21272,6 +21538,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21311,433 +21593,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21746,7 +22020,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21758,7 +22032,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21768,18 +22042,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21787,11 +22061,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21799,7 +22073,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21809,7 +22083,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21819,7 +22093,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21827,28 +22101,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21857,37 +22131,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21895,19 +22169,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21966,7 +22236,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22027,23 +22319,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22052,14 +22344,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22069,7 +22361,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22077,14 +22369,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22094,45 +22386,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22141,35 +22433,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22178,11 +22469,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22190,11 +22481,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22257,11 +22548,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22270,65 +22561,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22336,7 +22627,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22347,7 +22638,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22356,33 +22647,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22392,7 +22683,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22402,7 +22693,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22410,7 +22701,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22421,22 +22712,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22445,25 +22736,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22471,13 +22762,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22487,18 +22778,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22506,7 +22797,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22516,7 +22807,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22524,11 +22815,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22539,7 +22830,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22547,7 +22838,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22556,7 +22847,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22564,7 +22855,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22574,20 +22865,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22595,7 +22886,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22604,18 +22895,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22623,13 +22914,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22638,23 +22929,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22663,73 +22954,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25736,6 +26038,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/mk/LC_MESSAGES/messages.po b/locales/mk/LC_MESSAGES/messages.po index 5caa404ec..9f21d6fad 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2023-10-21 04:04+0000\n" "Last-Translator: \"Kristijan \\\"Fremen\\\" Velkovski\" \n" "Language-Team: Macedonian `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9939,32 +9939,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9973,7 +9981,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9997,83 +10005,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10082,26 +10090,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10109,28 +10117,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10138,33 +10146,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13539,7 +13547,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13549,7 +13557,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13642,9 +13650,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16504,29 +16514,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17339,6 +17349,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17914,7 +18051,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18704,10 +18841,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18870,6 +19007,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19119,6 +19388,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19851,7 +20121,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19866,7 +20136,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19881,14 +20151,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21278,6 +21544,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21317,433 +21599,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21752,7 +22026,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21764,7 +22038,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21774,18 +22048,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21793,11 +22067,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21805,7 +22079,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21815,7 +22089,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21825,7 +22099,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21833,28 +22107,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21863,37 +22137,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21901,19 +22175,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21972,7 +22242,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22033,23 +22325,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22058,14 +22350,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22075,7 +22367,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22083,14 +22375,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22100,45 +22392,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22147,35 +22439,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22184,11 +22475,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22196,11 +22487,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22263,11 +22554,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22276,65 +22567,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22342,7 +22633,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22353,7 +22644,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22362,33 +22653,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22398,7 +22689,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22408,7 +22699,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22416,7 +22707,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22427,22 +22718,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22451,25 +22742,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22477,13 +22768,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22493,18 +22784,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22512,7 +22803,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22522,7 +22813,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22530,11 +22821,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22545,7 +22836,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22553,7 +22844,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22562,7 +22853,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22570,7 +22861,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22580,20 +22871,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22601,7 +22892,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22610,18 +22901,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22629,13 +22920,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22644,23 +22935,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22669,73 +22960,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25742,6 +26044,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/mr/LC_MESSAGES/messages.po b/locales/mr/LC_MESSAGES/messages.po index 495f48e9c..0241ef9ed 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-01-25 14:18+0000\n" "Last-Translator: Prachi Joshi \n" "Language-Team: Marathi `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9928,32 +9928,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9962,7 +9970,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9986,83 +9994,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10071,26 +10079,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10098,28 +10106,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10127,33 +10135,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13528,7 +13536,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13538,7 +13546,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13631,9 +13639,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16493,29 +16503,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17328,6 +17338,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17903,7 +18040,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18693,10 +18830,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18859,6 +18996,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19108,6 +19377,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19840,7 +20110,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19855,7 +20125,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19870,14 +20140,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21267,6 +21533,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21306,433 +21588,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21741,7 +22015,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21753,7 +22027,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21763,18 +22037,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21782,11 +22056,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21794,7 +22068,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21804,7 +22078,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21814,7 +22088,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21822,28 +22096,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21852,37 +22126,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21890,19 +22164,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21961,7 +22231,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22022,23 +22314,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22047,14 +22339,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22064,7 +22356,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22072,14 +22364,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22089,45 +22381,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22136,35 +22428,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22173,11 +22464,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22185,11 +22476,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22252,11 +22543,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22265,65 +22556,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22331,7 +22622,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22342,7 +22633,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22351,33 +22642,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22387,7 +22678,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22397,7 +22688,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22405,7 +22696,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22416,22 +22707,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22440,25 +22731,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22466,13 +22757,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22482,18 +22773,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22501,7 +22792,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22511,7 +22802,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22519,11 +22810,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22534,7 +22825,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22542,7 +22833,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22551,7 +22842,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22559,7 +22850,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22569,20 +22860,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22590,7 +22881,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22599,18 +22890,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22618,13 +22909,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22633,23 +22924,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22658,73 +22949,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25731,6 +26033,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/pl/LC_MESSAGES/messages.po b/locales/pl/LC_MESSAGES/messages.po index 5e7222858..be3c1f5cc 100644 --- a/locales/pl/LC_MESSAGES/messages.po +++ b/locales/pl/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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-04-17 21:06+0000\n" "Last-Translator: Stan Ulbrych \n" "Language-Team: Polish `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9936,32 +9936,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9970,7 +9978,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9994,83 +10002,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10079,26 +10087,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10106,28 +10114,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10135,33 +10143,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13536,7 +13544,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13546,7 +13554,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13639,9 +13647,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16501,29 +16511,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17336,6 +17346,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17911,7 +18048,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18701,10 +18838,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18867,6 +19004,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19116,6 +19385,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19848,7 +20118,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19863,7 +20133,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19878,14 +20148,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21275,6 +21541,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21314,433 +21596,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21749,7 +22023,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21761,7 +22035,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21771,18 +22045,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21790,11 +22064,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21802,7 +22076,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21812,7 +22086,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21822,7 +22096,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21830,28 +22104,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21860,37 +22134,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21898,19 +22172,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21969,7 +22239,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22030,23 +22322,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22055,14 +22347,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22072,7 +22364,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22080,14 +22372,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22097,45 +22389,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22144,35 +22436,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22181,11 +22472,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22193,11 +22484,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22260,11 +22551,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22273,65 +22564,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22339,7 +22630,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22350,7 +22641,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22359,33 +22650,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22395,7 +22686,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22405,7 +22696,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22413,7 +22704,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22424,22 +22715,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22448,25 +22739,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22474,13 +22765,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22490,18 +22781,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22509,7 +22800,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22519,7 +22810,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22527,11 +22818,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22542,7 +22833,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22550,7 +22841,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22559,7 +22850,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22567,7 +22858,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22577,20 +22868,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22598,7 +22889,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22607,18 +22898,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22626,13 +22917,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22641,23 +22932,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22666,73 +22957,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25739,6 +26041,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/pt_BR/LC_MESSAGES/messages.po b/locales/pt_BR/LC_MESSAGES/messages.po index 41adbad31..ea977a314 100644 --- a/locales/pt_BR/LC_MESSAGES/messages.po +++ b/locales/pt_BR/LC_MESSAGES/messages.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-19 01:36+0000\n" -"PO-Revision-Date: 2025-07-17 00:05+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" +"PO-Revision-Date: 2025-08-07 00:01+0000\n" "Last-Translator: Rafael Fontenelle \n" "Language-Team: Portuguese (Brazil) \n" @@ -53,10 +53,8 @@ msgid "Writing new content" msgstr "Escrevendo novo conteúdo" #: ../source/contribute.rst:14 -#, fuzzy -#| msgid "Translate the guide" msgid "Translating the guide" -msgstr "Traduza o guia" +msgstr "Traduzindo o guia" #: ../source/contribute.rst:16 msgid "" @@ -214,11 +212,11 @@ msgstr "" "Se você não está familiarizado com a sintaxe reStructuredText (RST), leia " "`este guia`_ antes de traduzir no Weblate." -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "**Não traduza o texto em referências diretamente**" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -236,11 +234,11 @@ msgstr "" "Correto: traduzir o texto a seguir em seu próprio idioma e adicionar a " "referência original:" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "Construindo o guia localmente" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " @@ -250,13 +248,13 @@ msgstr "" "localmente para testar suas alterações. Para construir este guia localmente, " "você precisará:" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr "" ":doc:`Nox `. Você pode instalar ou atualizar o nox usando o " "``pip``:" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions ` para instalar o Python 3.11 " "em seu sistema operacional." -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 msgid "" "To build the guide, run the following shell command in the project's root " "folder:" @@ -276,7 +274,7 @@ msgstr "" "Para construir o guia, execute o seguinte comando shell na pasta raiz do " "projeto:" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -287,7 +285,7 @@ msgstr "" "``./build/html``. Você pode abrir o arquivo ``index.html`` para ver o guia " "no navegador web, mas é recomendado servir o guia usando um servidor HTTP." -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" @@ -295,15 +293,15 @@ msgstr "" "Você pode construir o guia e exibi-lo por meio de um servidor HTTP usando o " "seguinte comando:" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "O guia poderá ser navegado em http://localhost:8000." -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "Onde o guia é disponibilizado" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " @@ -313,11 +311,11 @@ msgstr "" "readthedocs.org/projects/python-packaging-user-guide/.. É servido a partir " "de um domínio personalizado e guardado por Fast.ly." -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "Guia de estilo" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -329,11 +327,11 @@ msgstr "" "suas contribuições ajudarão a formar um todo coeso e tornar mais fácil para " "que suas contribuições sejam aceitas no projeto." -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "Propósito" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." @@ -341,11 +339,11 @@ msgstr "" "O objetivo do |PyPUG| é ser o recurso autorizado sobre como empacotar, " "publicar e instalar projetos Python usando as ferramentas atuais." -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "Escopo" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." @@ -353,7 +351,7 @@ msgstr "" "O guia destina-se a responder a perguntas e resolver problemas com " "recomendações precisas e focadas." -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -367,16 +365,16 @@ msgstr "" "enquanto este guia descreve apenas as partes do pip que são necessárias para " "concluir as tarefas específicas descritas neste guia." -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "Público-alvo" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "" "O público-alvo deste guia é qualquer pessoa que use Python com pacotes." -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " @@ -386,7 +384,7 @@ msgstr "" "podem não compartilhar sua idade, sexo, educação, cultura e muito mais, mas " "eles merecem aprender sobre empacotamento tanto quanto você." -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " @@ -396,11 +394,11 @@ msgstr "" "consideram programadores. O público deste guia inclui astrônomos, pintores " "ou estudantes, bem como desenvolvedores de software profissionais." -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "Voz e tom" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." @@ -408,7 +406,7 @@ msgstr "" "Ao escrever este guia, esforce-se para escrever com uma voz que seja " "acessível e humilde, mesmo que você tenha todas as respostas." -#: ../source/contribute.rst:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -420,7 +418,7 @@ msgstr "" "de trabalhar com você. Essa pessoa fez uma pergunta e você sabe a resposta. " "Como você responde? *É assim* que você deve escrever este guia." -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -436,7 +434,7 @@ msgstr "" "Você tem permissão para encerrar uma frase em uma preposição, se for assim " "que deseja encerrá-la." -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -448,15 +446,15 @@ msgstr "" "problema em fazer uma piada, mas se estiver cobrindo uma recomendação de " "segurança sensível, convém evitar piadas completamente." -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "Convenções e mecânicas" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "**Escreva para o leitor**" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -476,11 +474,11 @@ msgstr "Certo: Você pode instalá-lo executando…" msgid "Right: To install it, run…" msgstr "Certo: Para instalá-lo, execute…" -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "**Presuma**" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -491,11 +489,11 @@ msgstr "" "página do guia pode ser a primeira página do guia que o leitor vê. Se você " "vai fazer suposições, diga quais suposições você vai fazer." -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "**Faça uso generoso de referência cruzada**" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " @@ -505,11 +503,11 @@ msgstr "" "link para a parte do guia que a cobre ou para um documento relevante em " "outro lugar. Economize uma pesquisa ao leitor." -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "**Respeite as práticas de nomenclatura**" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -533,11 +531,11 @@ msgstr "Errado: …hospedado no github." msgid "Right: …hosted on GitHub." msgstr "Certo: …hospedado no GitHub." -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "**Use um estilo de gênero neutro**" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -559,11 +557,11 @@ msgstr "Certo: A maintainer uploads the file. Then they…" msgid "Right: A maintainer uploads the file. Then the maintainer…" msgstr "Certo: A maintainer uploads the file. Then the maintainer…" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "**Títulos**" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -575,7 +573,7 @@ msgstr "" "implícita. Por exemplo, um leitor pode querer saber *How do I install " "MyLibrary?*, de forma que um bom título pode ser *Install MyLibrary*." -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -592,11 +590,11 @@ msgstr "Errado: Things You Should Know About Python" msgid "Right: Things you should know about Python" msgstr "Certo: Things you should know about Python" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "**Números**" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -1252,6 +1250,14 @@ msgid "" "files) should also be included, to help downstreams determine the needed " "dependencies, and check for changes in them." msgstr "" +"Este ponto se aplica apenas aos arquivos pertencentes ao próprio pacote. O " +"processo de empacotamento downstream, assim como os gerenciadores de pacotes " +"Python, provisionará as dependências Python, ferramentas de sistema e " +"bibliotecas externas necessárias para o seu pacote e seus scripts de " +"compilação. No entanto, os arquivos que listam essas dependências (por " +"exemplo, arquivos ``requirements*.txt``) também devem ser incluídos para " +"ajudar os downstreams a determinar as dependências necessárias e verificar " +"se há alterações nelas." #: ../source/discussions/downstream-packaging.rst:115 msgid "" @@ -1265,6 +1271,16 @@ msgid "" "Alternatively, large files, such as test data, can be split into separate " "archives." msgstr "" +"Alguns projetos apresentam preocupações relacionadas aos gerenciadores de " +"pacotes Python que utilizam distribuições de código-fonte do PyPI. Eles não " +"desejam aumentar seu tamanho com arquivos que não são usados por essas " +"ferramentas, ou não desejam publicar distribuições de código-fonte, pois " +"elas permitem um fallback problemático ou totalmente não funcional para a " +"construção do projeto específico a partir do código-fonte. Nesses casos, um " +"bom meio-termo pode ser publicar um arquivo de código-fonte separado para " +"uso posterior em outro lugar, por exemplo, anexando-o a uma versão do " +"GitHub. Como alternativa, arquivos grandes, como dados de teste, podem ser " +"divididos em arquivos separados." #: ../source/discussions/downstream-packaging.rst:124 msgid "" @@ -1276,6 +1292,13 @@ msgid "" "was taken by the cryptography_ project, with the large test vectors being " "split to cryptography-vectors_ package." msgstr "" +"Por outro lado, alguns projetos (NumPy_, por exemplo) decidem incluir testes " +"em seus pacotes instalados. Isso tem a vantagem adicional de permitir que os " +"usuários executem testes após a instalação, por exemplo, para verificar " +"regressões após a atualização de uma dependência. Outra abordagem é dividir " +"os testes ou os dados de teste em um pacote Python separado. Essa abordagem " +"foi adotada pelo projeto cryptography_, com os grandes vetores de teste " +"sendo divididos no pacote cryptography-vectors_." #: ../source/discussions/downstream-packaging.rst:132 msgid "" @@ -1285,6 +1308,12 @@ msgid "" "source distribution actually works, and that it won't accidentally install " "fewer files than the official wheels." msgstr "" +"Uma boa ideia é usar sua distribuição de código-fonte no fluxo de trabalho " +"de lançamento. Por exemplo, a ferramenta :ref:`build` faz exatamente isso — " +"primeiro cria uma distribuição de código-fonte e, em seguida, a utiliza para " +"criar uma wheel. Isso garante que a distribuição de código-fonte realmente " +"funcione e que ela não instale acidentalmente menos arquivos do que as " +"wheels oficiais." #: ../source/discussions/downstream-packaging.rst:138 msgid "" @@ -1293,6 +1322,12 @@ msgid "" "actually included. Understandably, this requires more effort, so it's fine " "not do that — downstream packagers will report any missing files promptly." msgstr "" +"O ideal é usar também a distribuição fonte para executar testes, compilar " +"documentação e assim por diante, ou adicionar testes específicos para " +"garantir que todos os arquivos necessários foram realmente incluídos. É " +"compreensível que isso exija mais esforço, então não há problema em não " +"fazer isso — os empacotadores posteriores reportarão imediatamente quaisquer " +"arquivos ausentes." #: ../source/discussions/downstream-packaging.rst:147 msgid "Do not use the Internet during the build process" @@ -1304,6 +1339,10 @@ msgid "" "access the Internet. The package sources are unpacked into this environment, " "and all the necessary dependencies are installed." msgstr "" +"As construções downstream são frequentemente realizadas em ambientes " +"isolados, sem acesso à internet. Os códigos-fonte dos pacotes são " +"descompactados nesse ambiente e todas as dependências necessárias são " +"instaladas." #: ../source/discussions/downstream-packaging.rst:156 msgid "" @@ -1316,34 +1355,37 @@ msgstr "" "seguintes razões:" #: ../source/discussions/downstream-packaging.rst:160 -#, fuzzy msgid "" "The Internet connection may be unstable (e.g. due to poor reception) or " "suffer from temporary problems that could cause the process to fail or hang." msgstr "" -"A conexão a internet pode ser instável (ex. má recepção) or apresentar " -"problemas temporários que podem causar a falha ou atraso no processo." +"A conexão a internet pode ser instável (ex. devido a má recepção) or " +"apresentar problemas temporários que podem causar a falha ou atraso no " +"processo." #: ../source/discussions/downstream-packaging.rst:164 -#, fuzzy msgid "" "The remote resources may become temporarily or even permanently unavailable, " "making the build no longer possible. This is especially problematic when " "someone needs to build an old package version." msgstr "" -"Os recursos remotos podem ficar indisponíveis temporáriamente ou até " +"Os recursos remotos podem ficar indisponíveis temporariamente ou até " "permanente, tornando a construção impossível. Isto é especialmente " -"problemático quando alguem precisa construir um pacote de versão antiga" +"problemático quando alguém precisa construir um pacote de versão antiga." #: ../source/discussions/downstream-packaging.rst:168 msgid "The remote resources may change, making the build not reproducible." msgstr "" +"Os recursos remotos podem mudar, tornando a construção não reprodutível." #: ../source/discussions/downstream-packaging.rst:170 msgid "" "Accessing remote servers poses a privacy issue and a potential security " "issue, as it exposes information about the system building the package." msgstr "" +"O acesso a servidores remotos representa um problema de privacidade e um " +"possível problema de segurança, pois expõe informações sobre o sistema que " +"cria o pacote." #: ../source/discussions/downstream-packaging.rst:174 msgid "" @@ -1351,6 +1393,9 @@ msgid "" "uncontrolled Internet access may result in additional charges or other " "inconveniences." msgstr "" +"O usuário pode estar usando um serviço com um plano de dados limitado, no " +"qual o acesso descontrolado à Internet pode resultar em cobranças adicionais " +"ou outros inconvenientes." #: ../source/discussions/downstream-packaging.rst:181 msgid "" @@ -1360,6 +1405,12 @@ msgid "" "all of these files or allow provisioning them externally, and the Internet " "must not be used if the files are already present." msgstr "" +"Se o pacote estiver implementando quaisquer ações de *backend* de construção " +"personalizadas que usem a Internet, por exemplo, baixando automaticamente " +"dependências fornecidas ou buscando submódulos do Git, sua distribuição " +"fonte deverá incluir todos esses arquivos ou permitir o provisionamento " +"externo, e a Internet não deverá ser usada se os arquivos já estiverem " +"presentes." #: ../source/discussions/downstream-packaging.rst:187 msgid "" @@ -1369,6 +1420,11 @@ msgid "" "Downstreams use frontends that use local provisioning for Python " "dependencies." msgstr "" +"Observe que este ponto não se aplica às dependências do Python especificadas " +"nos metadados do pacote e obtidas durante o processo de construção e " +"instalação por *frontends* (como :ref:`build` ou :ref:`pip`). Os downstreams " +"utilizam frontends que utilizam provisionamento local para dependências do " +"Python." #: ../source/discussions/downstream-packaging.rst:192 msgid "" @@ -1379,12 +1435,22 @@ msgid "" "disable all Internet access. This could be done e.g. by checking whether a " "``NO_NETWORK`` environment variable is set to a non-empty value." msgstr "" +"O ideal é que scripts de construção personalizados nem tentem acessar a " +"internet, a menos que explicitamente solicitados. Se algum recurso estiver " +"faltando e precisar ser recuperado, eles devem primeiro solicitar a " +"permissão do usuário. Se isso não for viável, a melhor solução é fornecer " +"uma opção de desativação para desabilitar todo o acesso à internet. Isso " +"pode ser feito, por exemplo, verificando se uma variável de ambiente " +"``NO_NETWORK`` está definida com um valor não vazio." #: ../source/discussions/downstream-packaging.rst:199 msgid "" "Since downstreams frequently also run tests and build documentation, the " "above should ideally extend to these processes as well." msgstr "" +"Como os downstreams frequentemente também executam testes e criam " +"documentação, o ideal é que o exposto acima se estenda também a esses " +"processos." #: ../source/discussions/downstream-packaging.rst:202 msgid "" @@ -1392,12 +1458,14 @@ msgid "" "absolutely must *verify their authenticity* (usually against a hash), to " "protect against the file being substituted by a malicious party." msgstr "" +"Lembre-se também de que, se você estiver buscando recursos remotos, será " +"absolutamente necessário *verificar a autenticidade deles* (geralmente por " +"meio de um hash) para evitar que o arquivo seja substituído por uma parte " +"mal-intencionada." #: ../source/discussions/downstream-packaging.rst:210 -#, fuzzy -#| msgid "Declaring build system dependencies" msgid "Support building against system dependencies" -msgstr "Declarando dependências do sistema de construção" +msgstr "Suporte à construção com dependências do sistema" #: ../source/discussions/downstream-packaging.rst:215 msgid "" @@ -1405,6 +1473,10 @@ msgid "" "in C or C++. Trying to use the system versions of these dependencies in " "upstream packaging may cause a number of problems for end users:" msgstr "" +"Alguns projetos Python possuem dependências que não são Python, como " +"bibliotecas escritas em C ou C++. Tentar usar as versões de sistema dessas " +"dependências em pacotes upstream pode causar uma série de problemas para os " +"usuários finais:" #: ../source/discussions/downstream-packaging.rst:219 msgid "" @@ -1413,6 +1485,11 @@ msgid "" "incompatible version is installed, the Python package may fail with errors " "that are not clear to inexperienced users, or even misbehave at runtime." msgstr "" +"As wheels publicadas exigem que uma versão binária compatível da biblioteca " +"utilizada esteja presente no sistema do usuário. Se a biblioteca estiver " +"ausente ou uma versão incompatível estiver instalada, o pacote Python poderá " +"falhar com erros que não são claros para usuários inexperientes, ou até " +"mesmo apresentar mau funcionamento em tempo de execução." #: ../source/discussions/downstream-packaging.rst:224 msgid "" @@ -1420,6 +1497,10 @@ msgid "" "the dependency to be present, along with its development headers and other " "auxiliary files that some systems package separately from the library itself." msgstr "" +"Construir a partir de uma distribuição fonte requer que uma versão " +"compatível com a origem da dependência esteja presente, juntamente com seus " +"cabeçalhos de desenvolvimento e outros arquivos auxiliares que alguns " +"sistemas empacotam separadamente da própria biblioteca." #: ../source/discussions/downstream-packaging.rst:229 msgid "" @@ -1439,6 +1520,11 @@ msgid "" "library to a newer version that breaks binary compatibility with the Python " "package, and requires user intervention to fix." msgstr "" +"A ligação entre o pacote Python e sua dependência do sistema não é " +"registrada pelo sistema de empacotamento. A próxima atualização do sistema " +"pode atualizar a biblioteca para uma versão mais recente, o que quebra a " +"compatibilidade binária com o pacote Python e requer intervenção do usuário " +"para correção." #: ../source/discussions/downstream-packaging.rst:239 msgid "" @@ -1448,6 +1534,11 @@ msgid "" "dependencies are also repackaged on PyPI, and can be declared as project " "dependencies like any other Python package." msgstr "" +"Por esses motivos, você pode decidir, com razão, vincular suas dependências " +"estaticamente ou fornecer cópias locais no pacote instalado. Você também " +"pode vender a dependência na sua distribuição fonte. Às vezes, essas " +"dependências também são reempacotadas no PyPI e podem ser declaradas como " +"dependências de projeto, como qualquer outro pacote Python." #: ../source/discussions/downstream-packaging.rst:245 msgid "" @@ -1455,6 +1546,9 @@ msgid "" "have good reasons to prefer dynamically linking to system dependencies. In " "particular:" msgstr "" +"No entanto, nenhuma dessas questões se aplica ao empacotamento downstream, e " +"os downstreams têm bons motivos para preferir vincular dinamicamente às " +"dependências do sistema. Em particular:" #: ../source/discussions/downstream-packaging.rst:249 msgid "" @@ -1463,12 +1557,18 @@ msgid "" "support that makes it easier for users of those systems to access upstream " "projects in their preferred format." msgstr "" +"Em muitos casos, o compartilhamento confiável de dependências dinâmicas " +"entre componentes é uma grande parte do *propósito* de um ecossistema de " +"empacotamento downstream. Ajudar a dar suporte a isso facilita o acesso dos " +"usuários desses sistemas a projetos upstream em seu formato preferido." #: ../source/discussions/downstream-packaging.rst:253 msgid "" "Static linking and vendoring obscures the use of external dependencies, " "making source auditing harder." msgstr "" +"A vinculação estática e a venda obscurecem o uso de dependências externas, " +"dificultando a auditoria da fonte." #: ../source/discussions/downstream-packaging.rst:256 msgid "" @@ -1477,6 +1577,10 @@ msgid "" "particularly important when they turn out to contain a security " "vulnerability or critical bug." msgstr "" +"A vinculação dinâmica possibilita a substituição rápida e sistemática das " +"bibliotecas usadas em todo um ecossistema de empacotamento downstream, o que " +"pode ser particularmente importante quando elas contêm uma vulnerabilidade " +"de segurança ou um bug crítico." #: ../source/discussions/downstream-packaging.rst:260 msgid "" @@ -1486,6 +1590,12 @@ msgid "" "dependencies vendored in different packages. This can include compatibility " "improvements and security hardening." msgstr "" +"O uso de dependências do sistema faz com que o pacote se beneficie da " +"personalização posterior, o que pode melhorar a experiência do usuário em " +"uma plataforma específica, sem que os mantenedores posteriores precisem " +"aplicar patches constantemente nas dependências fornecidas em diferentes " +"pacotes. Isso pode incluir melhorias de compatibilidade e reforço da " +"segurança." #: ../source/discussions/downstream-packaging.rst:266 msgid "" @@ -1496,6 +1606,13 @@ msgid "" "anything from library loading errors, to subtle runtime bugs, to " "catastrophic failures (like suddenly crashing and losing data)." msgstr "" +"A vinculação estática e a venda de versões podem resultar no carregamento de " +"várias versões diferentes da mesma biblioteca no mesmo processo (por " +"exemplo, ao tentar importar dois pacotes Python vinculados a versões " +"diferentes da mesma biblioteca). Isso às vezes funciona sem incidentes, mas " +"também pode levar a erros de carregamento de bibliotecas, bugs sutis de " +"tempo de execução e falhas catastróficas (como travamentos repentinos e " +"perda de dados)." #: ../source/discussions/downstream-packaging.rst:273 msgid "" @@ -1513,6 +1630,12 @@ msgid "" "for each dependency, and a general switch to control the default for them, e." "g. via a ``USE_SYSTEM_DEPS`` environment variable." msgstr "" +"Um bom meio-termo entre as necessidades de ambas as partes é fornecer uma " +"alternância entre o uso de dependências do fornecedor e do sistema. " +"Idealmente, se o pacote tiver várias dependências do fornecedor, ele deve " +"fornecer alternâncias individuais para cada dependência e uma alternância " +"geral para controlar o padrão para elas, por exemplo, por meio de uma " +"variável de ambiente ``USE_SYSTEM_DEPS``." #: ../source/discussions/downstream-packaging.rst:285 msgid "" @@ -1522,6 +1645,11 @@ msgid "" "the opportunity to notice their mistake and a chance to consciously decide " "how to solve it." msgstr "" +"Se o usuário solicitar usando dependências do sistema e uma dependência " +"específica estiver ausente ou for incompatível, a construção deverá falhar " +"com uma mensagem explicativa, em vez de retornar a uma versão do fornecedor. " +"Isso dá ao empacotador a oportunidade de perceber o erro e decidir " +"conscientemente como resolvê-lo." #: ../source/discussions/downstream-packaging.rst:291 msgid "" @@ -1531,11 +1659,16 @@ msgid "" "projects and downstream repackagers, not to suggest upstream projects take " "on tasks that downstream repackagers are better equipped to handle." msgstr "" +"É razoável que projetos upstream deixem os *testes* de construção com " +"dependências do sistema para seus reempacotadores downstream. O objetivo " +"destas diretrizes é facilitar uma colaboração mais eficaz entre projetos " +"upstream e reempacotadores downstream, e não sugerir que projetos upstream " +"assumam tarefas que os reempacotadores downstream estão mais bem equipados " +"para lidar." #: ../source/discussions/downstream-packaging.rst:300 -#, fuzzy msgid "Support downstream testing" -msgstr "Teste de suporte downstream" +msgstr "Ofereça suporte a testes no downstream" #: ../source/discussions/downstream-packaging.rst:305 msgid "" @@ -1544,18 +1677,20 @@ msgid "" "minimal smoke testing to comprehensive runs of the complete test suite. " "There can be various reasons for doing this, for example:" msgstr "" +"Diversos projetos downstream realizam algum grau de teste nos projetos " +"Python empacotados. Dependendo do caso específico, isso pode variar de " +"testes de fumaça mínimos a execuções abrangentes do conjunto de testes " +"completo. Pode haver vários motivos para isso, por exemplo:" #: ../source/discussions/downstream-packaging.rst:310 msgid "Verifying that the downstream packaging did not introduce any bugs." -msgstr "" +msgstr "Verificar se o empacotamento posterior não introduziu nenhum bug." #: ../source/discussions/downstream-packaging.rst:312 -#, fuzzy msgid "" "Testing on additional platforms that are not covered by upstream testing." msgstr "" -"Testando em plataformas adicionais que não estão cobertas por testes " -"upstream." +"Testar em plataformas adicionais que não estão cobertas por testes upstream." #: ../source/discussions/downstream-packaging.rst:314 msgid "" @@ -1570,6 +1705,8 @@ msgid "" "Testing the released package against newer (or older) dependency versions " "than the ones present during upstream release testing." msgstr "" +"Testar o pacote lançado em relação a versões de dependência mais recentes " +"(ou mais antigas) do que as presentes durante os testes de versão upstream." #: ../source/discussions/downstream-packaging.rst:320 msgid "" @@ -1578,15 +1715,18 @@ msgid "" "different installed packages, including packages that are not dependencies " "of your package, but nevertheless can cause issues." msgstr "" +"Testar o pacote em um ambiente muito semelhante à configuração de produção. " +"Isso pode detectar problemas causados por interações não triviais entre " +"diferentes pacotes instalados, incluindo pacotes que não são dependências do " +"seu pacote, mas que, mesmo assim, podem causar problemas." #: ../source/discussions/downstream-packaging.rst:325 -#, fuzzy msgid "" "Testing the released package against newer Python versions (including newer " "point releases), or less tested Python implementations such as PyPy." msgstr "" -"Testando o pacato lançado em novas versões do Python (incluindo os pontos " -"mais recentes), ou implementações menos testadas do Python, como PyPt" +"Testar o pacote lançado em novas versões do Python (incluindo os pontos mais " +"recentes), ou implementações menos testadas do Python, como o PyPy." #: ../source/discussions/downstream-packaging.rst:328 msgid "" @@ -1598,6 +1738,14 @@ msgid "" "downstream packagers are doing their best to double-check their results, and " "help upstream maintainers triage and fix the bugs that they reported." msgstr "" +"É verdade que, às vezes, testes downstream podem gerar falsos positivos ou " +"relatórios de bugs sobre cenários que o projeto upstream não tem interesse " +"em suportar. No entanto, talvez com ainda mais frequência, eles notificam " +"problemas com antecedência ou encontram bugs não triviais que, de outra " +"forma, causariam problemas para os usuários do projeto upstream. Embora " +"erros aconteçam, a maioria dos empacotadores downstream faz o possível para " +"verificar seus resultados e ajudar os mantenedores upstream a triar e " +"corrigir os bugs relatados." #: ../source/discussions/downstream-packaging.rst:339 msgid "" @@ -1608,12 +1756,20 @@ msgid "" "use for everyone, not just downstream packagers. Some specific suggestions " "are:" msgstr "" +"Há uma série de medidas que os projetos upstream podem tomar para ajudar os " +"reempacotadores downstream a testar seus pacotes de forma eficiente e " +"eficaz, incluindo algumas das sugestões já mencionadas. Essas são, em geral, " +"melhorias que tornam o conjunto de testes mais confiável e fácil de usar " +"para todos, não apenas para os empacotadores downstream. Algumas sugestões " +"específicas são:" #: ../source/discussions/downstream-packaging.rst:345 msgid "" "Include the test files and fixtures in the source distribution, or make it " "possible to easily download them separately." msgstr "" +"Inclua os arquivos de teste e acessórios na distribuição fonte ou torne " +"possível baixá-los facilmente separadamente." #: ../source/discussions/downstream-packaging.rst:348 msgid "" @@ -1622,6 +1778,10 @@ msgid "" "modifications performed during testing and temporary test files may end up " "being part of the installed package!" msgstr "" +"Não escreva nos diretórios de pacotes durante os testes. Às vezes, as " +"configurações de teste posteriores executam testes sobre o pacote instalado, " +"e modificações realizadas durante os testes e arquivos de teste temporários " +"podem acabar fazendo parte do pacote instalado!" #: ../source/discussions/downstream-packaging.rst:353 msgid "" @@ -3273,7 +3433,7 @@ msgid "" msgstr "" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 msgid "Versioning" msgstr "Versionamento" @@ -5082,7 +5242,7 @@ msgstr "Descrição" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "Exemplos" @@ -11086,11 +11246,17 @@ msgstr "" "uma conta do PyPI comum." #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 +#, fuzzy +#| msgid "" +#| "For security reasons, you must require `manual approval `_ on each run " +#| "for the ``pypi`` environment." msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" "Por motivos de segurança, você deve exigir a `aprovação manual `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "``license``" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -13057,7 +13233,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 #, fuzzy msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " @@ -13078,7 +13254,7 @@ msgstr "" "para evitar confusão quanto porque algumas organizações evitam software cuja " "licença não é aprovada." -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -13087,7 +13263,7 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 #, fuzzy @@ -13095,59 +13271,59 @@ msgstr "" msgid "``license-files``" msgstr "``license``" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." @@ -13155,13 +13331,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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "``classifiers``" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -13169,7 +13345,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:432 +#: ../source/guides/writing-pyproject-toml.rst:434 #, fuzzy msgid "" "Although the list of classifiers is often used to declare what Python " @@ -13184,7 +13360,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:437 +#: ../source/guides/writing-pyproject-toml.rst:439 #, fuzzy msgid "" "To prevent a package from being uploaded to PyPI, use the special " @@ -13195,13 +13371,13 @@ msgstr "" "especial ``'Private :: Do Not Upload'``. PyPI sempre rejeitará pacotes com " "classificadores começando com ``\"Private ::'``." -#: ../source/guides/writing-pyproject-toml.rst:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." @@ -13209,7 +13385,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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -13217,7 +13393,7 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 #, fuzzy #| msgid "" #| "Note that if the key contains spaces, it needs to be quoted, e.g., " @@ -13232,21 +13408,21 @@ msgstr "" "``Website = \"https://example.com\"``, mas ``\"Official Website\" = " "\"https://example.com\"``." -#: ../source/guides/writing-pyproject-toml.rst:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -13254,11 +13430,11 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "Plugins avançados" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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 " @@ -13268,15 +13444,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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 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:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "Um exemplo completo" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " @@ -13286,7 +13462,7 @@ msgstr "" "= \"<= 3.10\"`` aqui. `Este post de blog `_ " "contém algumas informações sobre possíveis problemas." -#: ../source/guides/writing-pyproject-toml.rst:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -17776,7 +17952,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -17786,7 +17962,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -17891,9 +18067,11 @@ msgstr "Alterações" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "Especificação" @@ -21444,29 +21622,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "Arquivo fonte:" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "URL Git com tag e hash de commit:" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "Diretório local:" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "Diretório local em modo editável:" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 #, fuzzy msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +#, fuzzy +msgid "Installers" +msgstr "Instalador" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -23009,7 +23321,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 #, fuzzy msgid "Recommendations" msgstr "Recomendações de ferramentas" @@ -23900,10 +24212,10 @@ msgstr "Conjuntos de Etiquetas Comprimidos" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -24078,6 +24390,153 @@ msgstr "" "Este documento descreve o formato dos especificadores de dependência " "conforme originalmente especificado na :pep:`508`." +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +#| msgid "Project Summaries" +msgid "Project Status Markers" +msgstr "Resumos de projetos" + +#: ../source/specifications/project-status-markers.rst:9 +#, fuzzy +#| msgid "" +#| "This document describes the dependency specifiers format as originally " +#| "specified in :pep:`508`." +msgid "This specification was originally defined in :pep:`792`." +msgstr "" +"Este documento descreve o formato dos especificadores de dependência " +"conforme originalmente especificado na :pep:`508`." + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +#| msgid "Installation" +msgid "Installer semantics: none." +msgstr "Instalação" + +#: ../source/specifications/project-status-markers.rst:45 +#, fuzzy +#| msgid "``packages``" +msgid "``archived``" +msgstr "``packages``" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +msgid "Installer semantics:" +msgstr "Instalador" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +#, fuzzy +#| msgid "Deprecated" +msgid "``deprecated``" +msgstr "Descontinuado" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "``pyproject.toml`` specification" @@ -24349,6 +24808,7 @@ msgid "``dependency-groups``" msgstr "``dependencies``" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" @@ -25189,8 +25649,10 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" -msgstr "" +#, fuzzy +#| msgid ":ref:`pyproject-toml-spec`" +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr ":ref:`pyproject-toml-spec`" #: ../source/specifications/pylock-toml.rst:676 msgid "" @@ -25204,7 +25666,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -25221,16 +25683,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:701 -#, fuzzy -#| msgid ":ref:`pyproject-toml-spec`" -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr ":ref:`pyproject-toml-spec`" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -26967,6 +27423,26 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +#, fuzzy +#| msgid "Hybrid schemes" +msgid "PyPA schemas" +msgstr "Esquemas híbridos" + +#: ../source/specifications/schemas/index.rst:6 +#, fuzzy +#| msgid "``direct_url.json``: see :ref:`direct-url` for details" +msgid "`direct_url.json `_" +msgstr "``direct_url.json``: veja :ref:`direct-url` para mais detalhes" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "Formatos de arquivos de distribuição de pacotes" @@ -27011,91 +27487,280 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +#, fuzzy +msgid "Normalized Names" +msgstr "Nomes não normalizados válidos" + +#: ../source/specifications/simple-repository-api.rst:35 +msgid "" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:52 +msgid "" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:68 +msgid "" +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:71 +msgid "" +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:75 +msgid "" +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:81 +msgid "" +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:91 +msgid "" +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:96 +msgid "" +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:98 +msgid "" +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +#, fuzzy +msgid "Clients" +msgstr "Conteúdo" + +#: ../source/specifications/simple-repository-api.rst:105 +msgid "" +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:109 +msgid "" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:115 +msgid "" +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:121 +#, fuzzy +msgid "HTML Serialization" +msgstr "Normalização" + +#: ../source/specifications/simple-repository-api.rst:125 +msgid "" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:129 +msgid "" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +#, fuzzy +msgid "Project List" +msgstr "Projeto" + +#: ../source/specifications/simple-repository-api.rst:135 msgid "" "Within a repository, the root URL (``/`` for this spec which represents the " "base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:139 +msgid "" +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +#, fuzzy +msgid "Project Detail" +msgstr "Nome do projeto" + +#: ../source/specifications/simple-repository-api.rst:158 msgid "" "Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:164 +msgid "" +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:167 +msgid "" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:172 +msgid "" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:177 msgid "" "In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" "All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " "repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " "the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" "URLs may be either absolute or relative as long as they point to the correct " "location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:186 msgid "" "There are no constraints on where the files must be hosted relative to the " "repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" "There may be any other HTML elements on the API pages as long as the " "required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" "Repositories **MAY** redirect unnormalized URLs to the canonical normalized " "URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " "NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" "Repositories **SHOULD** choose a hash function from one of the ones " "guaranteed to be available via the :py:mod:`hashlib` module in the Python " @@ -27103,7 +27768,7 @@ msgid "" "``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" "If there is a GPG signature for a particular distribution file it **MUST** " "live alongside that file with the same name with a ``.asc`` appended to it. " @@ -27112,13 +27777,13 @@ msgid "" "HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:91 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" "A repository **MAY** include a ``data-core-metadata`` attribute on a file " "link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-core-metadata`` attribute's value using the syntax " @@ -27128,25 +27793,25 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:217 msgid "" "A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " "file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:220 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" "``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" "A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " "with a value of either ``true`` or ``false`` to indicate whether or not " @@ -27154,7 +27819,7 @@ msgid "" "every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" "A repository **MAY** include a ``data-requires-python`` attribute on a file " "link. This exposes the :ref:`core-metadata-requires-python` metadata field " @@ -27163,284 +27828,89 @@ msgid "" "doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" "In the attribute value, < and > have to be HTML encoded as ``<`` and " "``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 -msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:139 -msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:142 -#, fuzzy -msgid "Normalized Names" -msgstr "Nomes não normalizados válidos" - -#: ../source/specifications/simple-repository-api.rst:144 -msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:161 -msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:168 -msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:180 -#, fuzzy -msgid "Installers" -msgstr "Instalador" - -#: ../source/specifications/simple-repository-api.rst:182 -msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:189 -msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:196 -msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:200 -msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:207 -msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:213 -msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:225 -msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:245 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:231 -msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:239 -msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" #: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" #: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:255 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" #: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" #: ../source/specifications/simple-repository-api.rst:268 -msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:278 -msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:283 -msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -#, fuzzy -msgid "Clients" -msgstr "Conteúdo" - -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -27449,7 +27919,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -27461,7 +27931,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -27471,19 +27941,19 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 #, fuzzy msgid "Backwards Compatibility" msgstr "Compatibilidade da ABI" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -27491,11 +27961,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -27503,7 +27973,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -27513,7 +27983,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -27523,7 +27993,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -27531,28 +28001,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -27561,38 +28031,38 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 #, fuzzy msgid "JSON Serialization" msgstr "Normalização" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -27600,19 +28070,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -#, fuzzy -msgid "Project List" -msgstr "Projeto" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 #, fuzzy msgid "As an example:" msgstr "Um exemplo completo" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -27673,7 +28138,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -27736,23 +28222,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 #, fuzzy msgid "" "``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " @@ -27764,14 +28250,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:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 #, fuzzy msgid "" "By default, any hash algorithm available via :py:mod:`hashlib` (specifically " @@ -27788,7 +28274,7 @@ msgstr "" "DEVE sempre ser incluído. No momento da escrita, ``sha256`` especificamente " "é recomendado." -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -27796,14 +28282,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -27813,45 +28299,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -27860,35 +28346,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -27897,11 +28382,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -27909,11 +28394,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -27977,12 +28462,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 #, fuzzy msgid "Version + Format Selection" msgstr "Versão" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -27991,65 +28476,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -28057,7 +28542,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -28068,7 +28553,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -28077,33 +28562,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -28113,7 +28598,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -28123,7 +28608,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -28131,7 +28616,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -28142,22 +28627,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -28166,25 +28651,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -28192,13 +28677,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -28208,19 +28693,19 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 #, fuzzy msgid "Endpoint Configuration" msgstr "Configurações comuns" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -28228,7 +28713,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -28238,7 +28723,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -28246,11 +28731,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -28261,7 +28746,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -28269,7 +28754,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -28278,7 +28763,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -28286,7 +28771,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -28296,20 +28781,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -28317,7 +28802,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -28326,18 +28811,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -28345,13 +28830,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -28360,23 +28845,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -28385,73 +28870,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "Formato de distribuição fonte" @@ -31892,6 +32388,13 @@ msgstr "" "está sendo trabalhada será compatível com a distribuição como um pacote " "Python instalável com ``pip``." +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "Empacotando projetos Python" @@ -32628,6 +33131,11 @@ msgid "" "the file is empty)." msgstr "" +#, fuzzy +#~| msgid ":ref:`pyproject-toml-spec`" +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr ":ref:`pyproject-toml-spec`" + #~ msgid "Signing the distribution packages" #~ msgstr "Assinando os pacotes de distribuição" @@ -33384,9 +33892,6 @@ msgstr "" #~ "Este é o esquema de versionamento mais simples possível e consiste em um " #~ "único número que é incrementado a cada versão." -#~ msgid "Hybrid schemes" -#~ msgstr "Esquemas híbridos" - #~ msgid "Pre-release versioning" #~ msgstr "Versionamento de pré-lançamento" diff --git a/locales/ro/LC_MESSAGES/messages.po b/locales/ro/LC_MESSAGES/messages.po index 2ac894e3c..679f3b3fc 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2021-08-20 01:32+0000\n" "Last-Translator: GUILHERME FERNANDES NETO \n" "Language-Team: Romanian `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9933,32 +9933,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9967,7 +9975,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9991,83 +9999,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10076,26 +10084,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10103,28 +10111,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10132,33 +10140,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13533,7 +13541,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13543,7 +13551,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13636,9 +13644,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16498,29 +16508,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17333,6 +17343,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17908,7 +18045,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18698,10 +18835,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18864,6 +19001,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19113,6 +19382,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19845,7 +20115,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19860,7 +20130,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19875,14 +20145,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21272,6 +21538,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21311,433 +21593,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21746,7 +22020,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21758,7 +22032,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21768,18 +22042,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21787,11 +22061,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21799,7 +22073,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21809,7 +22083,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21819,7 +22093,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21827,28 +22101,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21857,37 +22131,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21895,19 +22169,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21966,7 +22236,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22027,23 +22319,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22052,14 +22344,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22069,7 +22361,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22077,14 +22369,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22094,45 +22386,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22141,35 +22433,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22178,11 +22469,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22190,11 +22481,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22257,11 +22548,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22270,65 +22561,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22336,7 +22627,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22347,7 +22638,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22356,33 +22647,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22392,7 +22683,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22402,7 +22693,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22410,7 +22701,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22421,22 +22712,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22445,25 +22736,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22471,13 +22762,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22487,18 +22778,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22506,7 +22797,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22516,7 +22807,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22524,11 +22815,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22539,7 +22830,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22547,7 +22838,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22556,7 +22847,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22564,7 +22855,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22574,20 +22865,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22595,7 +22886,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22604,18 +22895,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22623,13 +22914,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22638,23 +22929,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22663,73 +22954,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25736,6 +26038,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/ru/LC_MESSAGES/messages.po b/locales/ru/LC_MESSAGES/messages.po index 04ed0e65d..38f2c4003 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-06-07 08:01+0000\n" "Last-Translator: da070116 \n" "Language-Team: Russian `. You can install or upgrade nox using ``pip``:" msgstr "" ":doc:`Nox `. Вы можете установить или обновить nox с помощью " "``pip``:" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions ` для установки Python 3.11 на вашей операционной " "системе." -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 msgid "" "To build the guide, run the following shell command in the project's root " "folder:" @@ -279,7 +279,7 @@ msgstr "" "Для сборки руководства выполните следующую команду shell в корневом каталоге " "проекта:" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -291,7 +291,7 @@ msgstr "" "веб-браузере, но рекомендуется обслуживать руководство с помощью сервера " "HTTP." -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" @@ -299,16 +299,16 @@ msgstr "" "Вы можете собрать руководство и обслуживать его через сервер HTTP, используя " "следующую команду:" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "" "Руководство будет доступно для просмотра по адресу http://localhost:8000." -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "Где развёрнуто руководство" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " @@ -318,11 +318,11 @@ msgstr "" "readthedocs.org/projects/python-packaging-user-guide/. Он подается из " "пользовательского домена и перед ним Fast.ly." -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "Стиль руководство" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -334,11 +334,11 @@ msgstr "" "руководству по стилю, ваш вклад поможет добавить в единое целое и облегчит " "принятие вашего вклада в проект." -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "Цель" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." @@ -346,11 +346,11 @@ msgstr "" "Цель |PyPUG| - быть авторитетным ресурсом о том, как упаковать, опубликовать " "и установить Python проекты с использованием современных инструментов." -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "Область действия" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." @@ -358,7 +358,7 @@ msgstr "" "Руководство предназначено для ответа на вопросы и решения проблем с помощью " "точных и целенаправленных рекомендаций." -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -372,15 +372,15 @@ msgstr "" "в этом руководстве описываются только те части pip, которые необходимы для " "выполнения конкретных задач, описанных в настоящем руководстве." -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "Аудитория" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "Аудитория этого руководства - любой, кто использует Python с пакетами." -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " @@ -390,7 +390,7 @@ msgstr "" "Читатели могут не делить свой возраст, пол, образование, культуру и многое " "другое, но они заслуживают того, чтобы узнать о упаковке так же, как и вы." -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " @@ -401,11 +401,11 @@ msgstr "" "астрономов или художников или студентов, а также профессиональных " "разработчиков программного обеспечения." -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "Голос и тон" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." @@ -413,7 +413,7 @@ msgstr "" "При написании этого руководства старайтесь писать голосом, который подходит " "и скромен, даже если у вас есть все ответы." -#: ../source/contribute.rst:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -425,7 +425,7 @@ msgstr "" "нравится работать с вами. Этот человек задал вам вопрос, и вы знаете ответ. " "Как ты реагируешь? * Вот как вы должны написать это руководство." -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -441,7 +441,7 @@ msgstr "" "правил грамматики. Настоящим вам предоставляется разрешение на завершение " "предложения в предположении, если это то, с чем вы хотите покончить." -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -453,15 +453,15 @@ msgstr "" "вы покрываете чувствительные рекомендации по безопасности, вы можете " "избежать шуток в целом." -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "Соглашения и механики" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "**Пишите читателю**" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -481,11 +481,11 @@ msgstr "Правильно: Вы можете установить его, за msgid "Right: To install it, run…" msgstr "Правильно: Чтобы установить его, запустите…" -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "**Государственные предположения**" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -497,11 +497,11 @@ msgstr "" "читатель когда-либо видел. Если вы собираетесь делать предположения, то " "скажите, какие предположения вы собираетесь делать." -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "**Кросс-ссылки щедро**" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " @@ -511,11 +511,11 @@ msgstr "" "части руководства, которая его охватывает, или обратитесь к соответствующему " "документу в другом месте. Сохраните читателю поиск." -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "**Следуйте правилам именования**" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -539,11 +539,11 @@ msgstr "Неправильно: …размещён на github." msgid "Right: …hosted on GitHub." msgstr "Правильно: …размещён на GitHub." -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "**Используйте гендерно-нейтральный стиль**" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -565,11 +565,11 @@ msgstr "Правильно: Сопровождающий загружает фа msgid "Right: A maintainer uploads the file. Then the maintainer…" msgstr "Правильно: Сопровождающий загружает файл. Затем сопровождающий…" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "**Заголовки**" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -582,7 +582,7 @@ msgstr "" "установить MyLibrary?*, поэтому хорошим заголовком будет *Установить " "MyLibrary*." -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -598,11 +598,11 @@ msgstr "Неправильно: Всё, Что Вам Нужно Знать О P msgid "Right: Things you should know about Python" msgstr "Правильно: Всё, что вам нужно знать о Python'е" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "**Числа**" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -3220,7 +3220,7 @@ msgstr "" "file:`__main__.py`:" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 msgid "Versioning" msgstr "Версионирование" @@ -5092,7 +5092,7 @@ msgstr "Описание" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "Примеры" @@ -11319,11 +11319,17 @@ msgstr "" "самое, что обычная учетная запись PyPI." #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 +#, fuzzy +#| msgid "" +#| "For security reasons, you must require `manual approval `_ on each run " +#| "for the ``pypi`` environment." msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" "По соображениям безопасности вы должны требовать `ручного одобрения `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "``лицензия``" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 #, fuzzy #| msgid "" #| "This is a valid :term:`SPDX license expression ` " @@ -13354,7 +13370,7 @@ msgstr "" "SPDX `_. Поддерживаемая версия списка - 3.17 или любая " "более поздняя совместимая." -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " @@ -13372,7 +13388,7 @@ msgstr "" "для того, чтобы избежать путаницы, так и потому, что некоторые организации " "избегают программ, лицензия которых не утверждена." -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -13386,13 +13402,13 @@ msgstr "" "соответствовать спецификации SPDX, `пункт 10.1 `_ версии 2.2 " "или любой более поздней совместимой." -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "``лицензионные файлы``" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." @@ -13400,11 +13416,11 @@ msgstr "" "Это список лицензионных файлов и файлов, содержащих другую юридическую " "информацию, которую вы хотите распространить вместе с пакетом." -#: ../source/guides/writing-pyproject-toml.rst:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "Шаблоны glob должны соответствовать спецификации:" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." @@ -13412,7 +13428,7 @@ msgstr "" "Буквенно-цифровые символы, знаки подчеркивания (``_``), дефисы (``-``) и " "точки (``.``) будут соответствовать дословно." -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." @@ -13420,11 +13436,11 @@ msgstr "" "Специальные символы: ``*``, ``?``, ``**`` и диапазоны символов: [] " "поддерживаются." -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "Разделителями путей должны быть символы прямой косой черты (``/``)." -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." @@ -13432,15 +13448,15 @@ msgstr "" "Шаблоны являются относительными к директории, содержащей :file:`pyproject." "toml`, и поэтому не могут начинаться с символа слэша." -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "Индикаторы родительских каталогов (``..``) не должны использоваться." -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "Каждый glob должен соответствовать хотя бы одному файлу." -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." @@ -13449,13 +13465,13 @@ msgstr "" "последовательности символов, не предусмотренные данной спецификацией, " "являются недопустимыми." -#: ../source/guides/writing-pyproject-toml.rst:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "``ключевые слова``" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." @@ -13463,13 +13479,13 @@ msgstr "" "Это поможет поисковой строке PyPI предлагать ваш проект при поиске по этим " "ключевым словам." -#: ../source/guides/writing-pyproject-toml.rst:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "`` классификаторы ``" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -13477,7 +13493,7 @@ msgstr "" "Список классификаторов PyPI, которые применимы к вашему проекту. Проверьте " "`полный список возможностей `_." -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -13491,7 +13507,7 @@ msgstr "" "действительно ограничить, на каких версиях Python может быть установлен " "проект, используйте аргумент :ref:`requires-python`." -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " @@ -13501,13 +13517,13 @@ msgstr "" "классификатор ``Private :: Do Not Upload``. PyPI всегда будет отклонять " "пакеты с классификаторами, начинающимися с ``Private ::``." -#: ../source/guides/writing-pyproject-toml.rst:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." @@ -13515,7 +13531,7 @@ msgstr "" "Список URL-адресов, связанных с вашим проектом, отображаемый на левой " "боковой панели страницы проекта PyPI." -#: ../source/guides/writing-pyproject-toml.rst:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -13527,7 +13543,7 @@ msgstr "" "pypi.org/project_metadata/#project-urls>`_ для обработки URL, специфичных " "для PyPI." -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" @@ -13537,7 +13553,7 @@ msgstr "" "кавычки, например, ``Website = «https://example.com»``, но ``«Официальный " "сайт» = «https://example.com»``." -#: ../source/guides/writing-pyproject-toml.rst:469 +#: ../source/guides/writing-pyproject-toml.rst:471 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " @@ -13547,7 +13563,7 @@ msgstr "" "адресов своих проектов, где это уместно, поскольку потребители метаданных " "(например, индексов пакетов) могут специализировать их представление." -#: ../source/guides/writing-pyproject-toml.rst:473 +#: ../source/guides/writing-pyproject-toml.rst:475 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " @@ -13556,7 +13572,7 @@ msgstr "" "Например, в следующих метаданных ни ``MyHomepage``, ни ``«Download Link»`` " "не являются известными метками, поэтому они будут отображены дословно:" -#: ../source/guides/writing-pyproject-toml.rst:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -13568,11 +13584,11 @@ msgstr "" "представлены с учетом этой семантики (домашняя страница проекта и его " "внешнее место загрузки, соответственно)." -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "Расширенные плагины" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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 " @@ -13582,17 +13598,17 @@ msgstr "" "можно привести Pytest_ и Pygments_. Чтобы создать такой плагин, нужно " "объявить его в подтаблице ``[project.entry-points]`` следующим образом:" -#: ../source/guides/writing-pyproject-toml.rst:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" "Дополнительную информацию см. в :ref:`Руководство по плагинам `." -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "Полный пример" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " @@ -13602,7 +13618,7 @@ msgstr "" "``requires-python = \"<= 3.10\"``. ``Эта запись в блоге `` содержит некоторую информацию о возможных проблемах." -#: ../source/guides/writing-pyproject-toml.rst:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -18074,7 +18090,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -18084,7 +18100,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -18190,9 +18206,11 @@ msgstr "Изменения" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "Спецификация" @@ -21800,23 +21818,23 @@ msgstr "" "Следующая JSON-схема может быть использована для проверки содержимого файла " "``direct_url.json``:" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "Архив источников:" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "URL-адрес Git с тегом и хэшем фиксации:" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "Локальный справочник:" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "Локальная директория в режиме редактирования:" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." @@ -21824,7 +21842,7 @@ msgstr "" "Март 2020 года: Эта спецификация была одобрена через :pep:`610`, определяя " "файл метаданных ``direct_url.json``." -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -23050,6 +23068,199 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "Июнь 2022: Эта спецификация была одобрена через :pep:`668`." +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +#, fuzzy +#| msgid "This specification was originally defined in :pep:`753`." +msgid "This specification was originally defined in :pep:`592`." +msgstr "Эта спецификация была первоначально определена в :pep:`753`." + +#: ../source/specifications/file-yanking.rst:14 +#, fuzzy +#| msgid "" +#| ":pep:`740` includes changes to the HTML and JSON index APIs. These " +#| "changes are documented in the :ref:`simple-repository-api` under :ref:" +#| "`simple-repository-api-base` and :ref:`json-serialization`." +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" +":pep:`740` включает изменения в HTML и JSON API индексов. Эти изменения " +"документированы в разделах :ref:`Simple-repository-api` под :ref:`Simple-" +"repository-api-base` и :ref:`json-serialization`." + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" +"Ссылки в простом репозитории **МОГУТ** иметь атрибут ``данные-янки'', " +"который может не иметь значения, или иметь произвольную строку в качестве " +"значения. Наличие атрибута ``данные-янки'' **ДОЛЖНО** интерпретироваться как " +"указание на то, что файл, на который указывает данная конкретная ссылка, был " +"\"выдернут\", и не должен выбираться программой установки, за исключением " +"особых случаев." + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" +"Значение атрибута ``данные выдернуты``, если он присутствует, представляет " +"собой произвольную строку, которая отражает причину, по которой файл был " +"выдернут. Инструменты, обрабатывающие простой API репозитория, **МОГУТ** " +"отображать эту строку для конечных пользователей." + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" +"Атрибут yanked не является неизменяемым после установки и может быть отменен " +"в будущем (а после отмены может быть также сброшен). Таким образом, " +"пользователи API **МОГУТ** быть в состоянии справиться с тем, что файл с " +"атрибутом yanked может быть \"отменен\" (и даже снова отменен)." + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "Установщики" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" +"Для пользователей желательно, чтобы после удаления файла, когда человек в " +"данный момент пытается напрямую установить удаленный файл, это происходило " +"так, как будто файл был удален. Однако если человек сделал это некоторое " +"время назад, а теперь компьютер просто продолжает механически следовать " +"первоначальному приказу установить удаленный файл, то он ведет себя так, как " +"будто он не был удален." + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" +"Программа установки **ДОЛЖНА** игнорировать выдернутые релизы, если " +"ограничения выбора могут быть удовлетворены с помощью не выдернутой версии, " +"и **МОЖЕТ** отказаться от использования выдернутого релиза, даже если это " +"означает, что запрос вообще не может быть удовлетворен. Реализация " +"**ДОЛЖНА** выбрать политику, которая следует духу вышеуказанного намерения и " +"предотвращает \"новые\" зависимости от выдернутых релизов/файлов." + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" +"Что это значит, решает конкретный инсталлятор, чтобы решить, как лучше всего " +"вписать это в общее использование своего инсталлятора. Однако можно " +"предложить два подхода:" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" +"Выдернутые файлы всегда игнорируются, если только они не являются " +"единственным файлом, соответствующим спецификатору версии, который " +"\"привязывает\" к точной версии с помощью ``==`` (без каких-либо " +"модификаторов, которые делают его диапазоном, таких как ``.*``) или ``===``. " +"В остальном соответствие этому спецификатору версии должно выполняться " +"согласно : ссылка:`спецификации спецификаторов версии <версия-" +"спецификаторы>` для таких вещей, как локальные версии, нулевые подстановки и " +"т.д." + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" +"Выдернутые файлы всегда игнорируются, если только они не являются " +"единственным файлом, который соответствует тому, что указано в файле " +"блокировки (например, ``Pipfile.lock`` или ``poetry.lock``) для установки. В " +"этом случае выдернутый файл **ДОЛЖЕН** не использоваться при создании или " +"обновлении файла блокировки из какого-либо входного файла или команды." + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" +"Независимо от конкретной стратегии, которую выбирает программа установки для " +"принятия решения об установке выдернутых файлов, программа установки " +"**ДОЛЖНА** выдавать предупреждение, когда она принимает решение об установке " +"выдернутого файла. Это предупреждение **МОЖЕТ** использовать значение " +"атрибута ``данные выдернуты'' (если он имеет значение), чтобы предоставить " +"пользователю более конкретную информацию о том, почему этот файл был " +"выдернут." + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "Зеркала" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "Как правило, зеркала можно обрабатывать одним из двух способов:" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" +"Они могут полностью исключить их из своего простого API репозитория, " +"предоставляя представление репозитория, в котором отображаются только " +"\"активные\", незаанкетированные файлы." + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" +"Они могут выбрать включение выдернутых файлов и дополнительно отразить " +"атрибут ``данные выдернуты``." + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" +"Зеркала **МОГУТ НЕ** зеркалировать выдернутый файл, не зеркалируя также " +"атрибут ``данные выдернуты`` для него." + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -23836,7 +24047,7 @@ msgid "" msgstr "Ниже приведен пример чтения потока произвольных блоков метаданных." #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "Рекомендации" @@ -24860,13 +25071,21 @@ msgid "Compressed Tag Sets" msgstr "Сжатые наборы тегов" #: ../source/specifications/platform-compatibility-tags.rst:352 +#, fuzzy +#| msgid "" +#| "To allow for compact filenames of bdists that work with more than one " +#| "compatibility tag triple, each tag in a filename can instead be a '.'-" +#| "separated, sorted, set of tags. For example, pip, a pure-Python package " +#| "that is written to run under Python 2 and 3 with the same source code, " +#| "could distribute a bdist with the tag ``py2.py3-none-any``. The full list " +#| "of simple tags is::" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" "Чтобы обеспечить компактные имена файлов bdist, которые работают с более чем " "одной тройкой тегов совместимости, каждый тег в имени файла может быть '.'-" @@ -25094,6 +25313,157 @@ msgstr "Декабрь 2023 года: Теги для iOS были одобре msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "Март 2024 года: Теги для Android были одобрены через :pep:`738`." +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +#| msgid "Project Summaries" +msgid "Project Status Markers" +msgstr "Обзор проектов" + +#: ../source/specifications/project-status-markers.rst:9 +#, fuzzy +#| msgid "This specification was originally defined in :pep:`740`." +msgid "This specification was originally defined in :pep:`792`." +msgstr "Эта спецификация была первоначально определена в :pep:`740`." + +#: ../source/specifications/project-status-markers.rst:14 +#, fuzzy +#| msgid "" +#| ":pep:`740` includes changes to the HTML and JSON index APIs. These " +#| "changes are documented in the :ref:`simple-repository-api` under :ref:" +#| "`simple-repository-api-base` and :ref:`json-serialization`." +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" +":pep:`740` включает изменения в HTML и JSON API индексов. Эти изменения " +"документированы в разделах :ref:`Simple-repository-api` под :ref:`Simple-" +"repository-api-base` и :ref:`json-serialization`." + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +#| msgid "Installation" +msgid "Installer semantics: none." +msgstr "Установка" + +#: ../source/specifications/project-status-markers.rst:45 +#, fuzzy +msgid "``archived``" +msgstr "``arch``" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +#| msgid "Installers" +msgid "Installer semantics:" +msgstr "Установщики" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +#, fuzzy +#| msgid "Deprecated" +msgid "``deprecated``" +msgstr "Устаревшее" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "``pyproject.toml`` specification" @@ -25361,6 +25731,7 @@ msgid "``dependency-groups``" msgstr "Таблица ``[dependency-groups]``" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" @@ -26211,8 +26582,10 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" -msgstr "" +#, fuzzy +#| msgid ":ref:`pyproject-toml-spec`" +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr ":ref:`pyproject-toml-spec`" #: ../source/specifications/pylock-toml.rst:676 msgid "" @@ -26226,7 +26599,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -26243,16 +26616,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:701 -#, fuzzy -#| msgid ":ref:`pyproject-toml-spec`" -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr ":ref:`pyproject-toml-spec`" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -28121,6 +28488,26 @@ msgstr "" "Сентябрь 2020 года: Различные поправки и уточнения были одобрены через :pep:" "`627`." +#: ../source/specifications/schemas/index.rst:4 +#, fuzzy +#| msgid "Data schema" +msgid "PyPA schemas" +msgstr "Схема данных" + +#: ../source/specifications/schemas/index.rst:6 +#, fuzzy +#| msgid "``direct_url.json``: see :ref:`direct-url` for details" +msgid "`direct_url.json `_" +msgstr "``direct_url.json``: подробности см. в :ref:`direct-url``" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "Форматы файлов распространения пакетов" @@ -28166,20 +28553,33 @@ msgstr "" "интерпретироваться, как описано в :rfc:`2119`." #: ../source/specifications/simple-repository-api.rst:13 +#, fuzzy +#| msgid "" +#| "The interface for querying available package versions and retrieving " +#| "packages from an index server comes in two forms: HTML and JSON." msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" "Интерфейс для запроса доступных версий пакетов и получения пакетов с " "индексного сервера представлен в двух формах: HTML и JSON." -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +#, fuzzy +#| msgid "Base HTML API" +msgid "Base API" msgstr "Базовый HTML API" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 +#, fuzzy +#| msgid "" +#| "A repository that implements the simple API is defined by its base URL, " +#| "this is the top level URL that all additional URLs are below. The API is " +#| "named the \"simple\" repository due to the fact that PyPI's base URL is " +#| "``https://pypi.org/simple/``." msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." @@ -28189,7 +28589,7 @@ msgstr "" "назван \"простым\" репозиторием из-за того, что базовый URL PyPI - ``https://" "pypi.org/simple/``." -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" @@ -28199,13 +28599,261 @@ msgstr "" "URL (поэтому, учитывая URL PyPI, URL ``/foo/`` будет ``https://pypi.org/" "simple/foo/``." -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" +msgstr "Нормализованные названия" + +#: ../source/specifications/simple-repository-api.rst:35 +msgid "" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" +msgstr "" +"Эта спецификация ссылается на концепцию \"нормализованного\" имени проекта. " +"Согласно : ссылка:спецификации нормализации имен <название - нормализация>` " +"единственными допустимыми символами в имени являются алфавит ASCII, числа " +"ASCII, ``.``, ``-`` и ``_``. Имя должно быть строчным, при этом все пробелы " +"символов ``.``, ``-`` или ``_`` должны быть заменены одним символом ``-``. " +"Это можно реализовать на языке Python с помощью модуля ``re``::" + +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" +msgstr "Версионирование простого API PyPI" + +#: ../source/specifications/simple-repository-api.rst:52 +msgid "" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." +msgstr "" +"Эта спецификация предлагает включение мета-тега в ответы на каждый успешный " +"запрос к простой странице API, который содержит атрибут имени ``pypi:" +"repository-version`` и содержимое, которое является совместимым с :ref:" +"``спецификацией версий ` номером версии, который далее " +"ограничивается тем, что он может быть только Major.Minor, и ни одной из " +"дополнительных возможностей, поддерживаемых :ref:``спецификацией версий " +"`." + +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" +msgstr "В итоге это будет выглядеть так:" + +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" +msgstr "При интерпретации версии репозитория:" + +#: ../source/specifications/simple-repository-api.rst:68 +msgid "" +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." +msgstr "" +"Увеличение основной версии используется для сигнализации об изменении, " +"несовместимом с обратной стороной, когда существующие клиенты уже не смогут " +"полноценно использовать API." + +#: ../source/specifications/simple-repository-api.rst:71 +msgid "" +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." +msgstr "" +"Увеличение минорной версии используется для того, чтобы сигнализировать об " +"изменении обратной совместимости, так что ожидается, что существующие " +"клиенты все еще смогут полноценно использовать API." + +#: ../source/specifications/simple-repository-api.rst:75 +msgid "" +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." +msgstr "" +"На усмотрение любых будущих спецификаций остается вопрос о том, что именно " +"считать обратно несовместимым и совместимым изменением, помимо широкого " +"предложения о том, что существующие клиенты смогут \"осмысленно\" продолжать " +"использовать API, и это может включать добавление, модификацию или удаление " +"существующих функций." + +#: ../source/specifications/simple-repository-api.rst:81 +msgid "" +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" +"Предполагается, что основная версия никогда не будет увеличиваться, и любые " +"будущие основные эволюции API будут использовать другой механизм для " +"эволюции API. Тем не менее, основная версия включена для того, чтобы не было " +"разночтений с будущими версиями (например, гипотетический простой api v2, " +"который жил по адресу /v2/, но который был бы запутан, если бы в репозитории-" +"версия была установлена версия >= 2)." + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" +msgstr "История версий API" + +#: ../source/specifications/simple-repository-api.rst:91 +msgid "" +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." +msgstr "" +"Этот раздел содержит только сокращенную историю изменений, отмеченную " +"номером версии API. Полную историю изменений, включая изменения, сделанные " +"до появления версий API, смотрите в :ref:`History `." + +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +msgstr "" +"Версия API 1.0: Начальная версия API, объявленная с помощью :pep:`629`." + +#: ../source/specifications/simple-repository-api.rst:96 +msgid "" +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." +msgstr "" +"API версии 1.1: Добавлены метаданные ``версии``, ``файлы[].размер`` и " +"``файлы[].время загрузки`` в сериализацию JSON, объявленную с помощью :pep:" +"`700``." + +#: ../source/specifications/simple-repository-api.rst:98 +msgid "" +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." +msgstr "" +"API версии 1.2: Добавлены метаданные репозитория \"треки\", объявленные с " +"помощью :pep:`708`." + +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" +"API версии 1.3: Добавлены метаданные о происхождении, объявленные с помощью :" +"pep:`740`." + +#: ../source/specifications/simple-repository-api.rst:100 +#, fuzzy +#| msgid "" +#| "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" +"API версии 1.3: Добавлены метаданные о происхождении, объявленные с помощью :" +"pep:`740`." + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" +msgstr "Клиенты" + +#: ../source/specifications/simple-repository-api.rst:105 +msgid "" +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." +msgstr "" +"Клиенты, взаимодействующие с простым API, **ОБЯЗАНЫ** проверять каждый ответ " +"на версию хранилища, и если эти данные отсутствуют, **ОБЯЗАНЫ** считать, что " +"это версия 1.0." + +#: ../source/specifications/simple-repository-api.rst:109 +msgid "" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." +msgstr "" +"При столкновении с основной версией, превышающей ожидаемую, клиенты " +"**ДОЛЖНЫ** жестко отказывать с соответствующим сообщением об ошибке для " +"пользователя." + +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." +msgstr "" +"При столкновении с минорной версией, превышающей ожидаемую, клиенты " +"**ДОЛЖНЫ** предупреждать пользователей соответствующим сообщением." + +#: ../source/specifications/simple-repository-api.rst:115 +msgid "" +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." +msgstr "" +"Клиенты **МОГУТ** продолжать использовать обнаружение функций, чтобы " +"определить, какие функции использует хранилище." + +#: ../source/specifications/simple-repository-api.rst:121 +#, fuzzy +#| msgid "JSON Serialization" +msgid "HTML Serialization" +msgstr "Сериализация JSON" + +#: ../source/specifications/simple-repository-api.rst:125 +#, fuzzy +#| msgid "" +#| "The following constraints apply to all JSON serialized responses " +#| "described in this spec:" +msgid "" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" +msgstr "" +"Следующие ограничения применяются ко всем сериализованным ответам JSON, " +"описанным в данной спецификации:" + +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:129 +msgid "" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" +msgstr "Список проектов" + +#: ../source/specifications/simple-repository-api.rst:135 +#, fuzzy +#| msgid "" +#| "Within a repository, the root URL (``/`` for this spec which represents " +#| "the base URL) **MUST** be a valid HTML5 page with a single anchor element " +#| "per project in the repository. The text of the anchor tag **MUST** be the " +#| "name of the project and the href attribute **MUST** link to the URL for " +#| "that particular project. As an example:" msgid "" "Within a repository, the root URL (``/`` for this spec which represents the " "base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"project in the repository." +msgstr "" +"Внутри репозитория корневой URL (``/`` в данной спецификации представляет " +"собой базовый URL) **ДОЛЖЕН** быть корректной HTML5-страницей с одним " +"якорным элементом для каждого проекта в репозитории. Текст тега якоря " +"**ДОЛЖЕН** быть названием проекта, а атрибут href ** ДОЛЖЕН** ссылаться на " +"URL для этого конкретного проекта. В качестве примера:" + +#: ../source/specifications/simple-repository-api.rst:139 +#, fuzzy +#| msgid "" +#| "Within a repository, the root URL (``/`` for this spec which represents " +#| "the base URL) **MUST** be a valid HTML5 page with a single anchor element " +#| "per project in the repository. The text of the anchor tag **MUST** be the " +#| "name of the project and the href attribute **MUST** link to the URL for " +#| "that particular project. As an example:" +msgid "" +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" "Внутри репозитория корневой URL (``/`` в данной спецификации представляет " "собой базовый URL) **ДОЛЖЕН** быть корректной HTML5-страницей с одним " @@ -28213,41 +28861,61 @@ msgstr "" "**ДОЛЖЕН** быть названием проекта, а атрибут href ** ДОЛЖЕН** ссылаться на " "URL для этого конкретного проекта. В качестве примера:" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" +msgstr "Деталь проекта" + +#: ../source/specifications/simple-repository-api.rst:158 msgid "" "Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." -msgstr "" -"Ниже корневого URL находится еще один URL для каждого отдельного проекта, " -"содержащегося в репозитории. Формат этого URL - ``/<проект>/``, где " -"``<проект>`` заменяется нормализованным именем проекта, поэтому проект с " -"именем \"HolyGrail\" будет иметь URL вида ``/holygrail/``. В ответ на этот " -"URL должна появиться корректная HTML5-страница с одним элементом якоря для " -"каждого файла проекта. Атрибут href **ДОЛЖЕН** быть URL, который ссылается " -"на местоположение файла для загрузки, а текст тега якоря **ДОЛЖЕН** " -"совпадать с конечным компонентом пути (именем файла) в URL. URL **ДОЛЖЕН** " -"включать хэш в виде фрагмента URL со следующим синтаксисом: ``#<хэш-" -"имя>=<хэш-значение>``, где ``<хэш-имя>`` - строчное имя хэш-функции " -"(например, ``sha256``), а ``<хэш-значение>`` - шестнадцатеричное кодирование " -"дайджеста." +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." +msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:164 +msgid "" +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:167 +msgid "" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:172 +#, fuzzy +#| msgid "" +#| "The repository **SHOULD** provide the hash of the Core Metadata file as " +#| "the ``data-core-metadata`` attribute's value using the syntax " +#| "``=``, where ```` is the lower cased name " +#| "of the hash function used, and ```` is the hex encoded digest. " +#| "The repository **MAY** use ``true`` as the attribute's value if a hash is " +#| "unavailable." +msgid "" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." +msgstr "" +"Хранилище **ДОЛЖНО** предоставить хэш файла основных метаданных в качестве " +"значения атрибута ``data-core-metadata``, используя синтаксис " +"``=``, где ```` - это имя используемой хэш-" +"функции, а ```` - шестнадцатеричный дайджест. Хранилище **МОЖЕТ** " +"использовать ``true`` в качестве значения атрибута, если хэш недоступен." + +#: ../source/specifications/simple-repository-api.rst:177 msgid "" "In addition to the above, the following constraints are placed on the API:" msgstr "" "В дополнение к вышесказанному, на API накладываются следующие ограничения:" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" "All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " "repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " @@ -28257,7 +28925,7 @@ msgstr "" "``/``, а хранилище **ДОЛЖНО** перенаправлять URL-адреса без ``/``, чтобы " "добавить ``/`` в конец." -#: ../source/specifications/simple-repository-api.rst:66 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" "URLs may be either absolute or relative as long as they point to the correct " "location." @@ -28265,7 +28933,7 @@ msgstr "" "URL-адреса могут быть как абсолютными, так и относительными, если они " "указывают на правильное местоположение." -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:186 msgid "" "There are no constraints on where the files must be hosted relative to the " "repository." @@ -28273,7 +28941,7 @@ msgstr "" "Нет никаких ограничений на то, где должны быть размещены файлы относительно " "хранилища." -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" "There may be any other HTML elements on the API pages as long as the " "required anchor elements exist." @@ -28281,7 +28949,7 @@ msgstr "" "На страницах API могут быть любые другие HTML-элементы при условии наличия " "необходимых элементов якоря." -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" "Repositories **MAY** redirect unnormalized URLs to the canonical normalized " "URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " @@ -28292,7 +28960,7 @@ msgstr "" "foobar/``), однако клиенты **НЕ ДОЛЖНЫ** полагаться на это перенаправление и " "**МОГУТ** запрашивать нормализованный URL." -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" "Repositories **SHOULD** choose a hash function from one of the ones " "guaranteed to be available via the :py:mod:`hashlib` module in the Python " @@ -28305,7 +28973,7 @@ msgstr "" "```sha256``, ```sha384``, ```sha512``). В настоящее время рекомендуется " "использовать ``sha256``." -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" "If there is a GPG signature for a particular distribution file it **MUST** " "live alongside that file with the same name with a ``.asc`` appended to it. " @@ -28319,14 +28987,14 @@ msgstr "" "соответствующую подпись, подпись будет находиться по адресу ``/пакеты/" "HolyGrail-1.0.tar.gz.asc``." -#: ../source/specifications/simple-repository-api.rst:91 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" "A repository **MAY** include a ``data-core-metadata`` attribute on a file " "link." msgstr "" "Хранилище **МОЖЕТ** включать атрибут ``data-core-metadata`` в ссылку на файл." -#: ../source/specifications/simple-repository-api.rst:94 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-core-metadata`` attribute's value using the syntax " @@ -28341,7 +29009,7 @@ msgstr "" "функции, а ```` - шестнадцатеричный дайджест. Хранилище **МОЖЕТ** " "использовать ``true`` в качестве значения атрибута, если хэш недоступен." -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:217 msgid "" "A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " "file link." @@ -28349,7 +29017,7 @@ msgstr "" "Хранилище **МОЖЕТ** включать атрибут ``data-dist-info-metadata`` в ссылку на " "файл." -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:220 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``data-core-metadata``." @@ -28357,7 +29025,7 @@ msgstr "" "Индексные клиенты **МОГУТ** использовать этот ключ, если он присутствует, в " "качестве традиционного запасного варианта для ``data-core-metadata``." -#: ../source/specifications/simple-repository-api.rst:108 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" "``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``data-core-metadata`` with :pep:`714`." @@ -28365,7 +29033,7 @@ msgstr "" "``data-dist-info-metadata`` была стандартизирована в :pep:`658` и " "переименована в ``data-core-metadata`` в :pep:`714`." -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" "A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " "with a value of either ``true`` or ``false`` to indicate whether or not " @@ -28377,7 +29045,7 @@ msgstr "" "подписи. Репозитории, которые делают это, **ДОЛЖНЫ** включать его в каждую " "ссылку." -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" "A repository **MAY** include a ``data-requires-python`` attribute on a file " "link. This exposes the :ref:`core-metadata-requires-python` metadata field " @@ -28391,7 +29059,7 @@ msgstr "" "**ДОЛЖНЫ** игнорировать загрузку при установке на версию Python, которая не " "удовлетворяет этому требованию. Например:" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" "In the attribute value, < and > have to be HTML encoded as ``<`` and " "``>``, respectively." @@ -28399,64 +29067,31 @@ msgstr "" "В значении атрибута < и > должны быть закодированы в HTML как ``<`` и " "``>``, соответственно." -#: ../source/specifications/simple-repository-api.rst:128 -msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." -msgstr "" -"Хранилище **МОЖЕТ** включать атрибут ``data-provenance`` в ссылку на файл. " -"Значение этого атрибута **ДОЛЖНО** представлять собой полностью определенный " -"URL, сигнализирующий о том, что информацию о происхождении файла можно найти " -"по этому URL. Этот URL **ДОЛЖЕН** представлять собой `secure origin `_." - -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." -msgstr "Атрибут ``data-provenance`` был добавлен в API версии 1.3." - -#: ../source/specifications/simple-repository-api.rst:139 -msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." -msgstr "" -"Формат связанного провенанса определен в :ref:`index-hosted-attestations`." - -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" -msgstr "Нормализованные названия" - -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:245 +#, fuzzy +#| msgid "" +#| "A repository **MAY** include a ``data-core-metadata`` attribute on a file " +#| "link." msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -"Эта спецификация ссылается на концепцию \"нормализованного\" имени проекта. " -"Согласно : ссылка:спецификации нормализации имен <название - нормализация>` " -"единственными допустимыми символами в имени являются алфавит ASCII, числа " -"ASCII, ``.``, ``-`` и ``_``. Имя должно быть строчным, при этом все пробелы " -"символов ``.``, ``-`` или ``_`` должны быть заменены одним символом ``-``. " -"Это можно реализовать на языке Python с помощью модуля ``re``::" - -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" -msgstr "Добавление поддержки \"Янк\" в простой API" +"Хранилище **МОЖЕТ** включать атрибут ``data-core-metadata`` в ссылку на файл." -#: ../source/specifications/simple-repository-api.rst:161 -msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +#: ../source/specifications/simple-repository-api.rst:247 +#, fuzzy +#| msgid "" +#| "Links in the simple repository **MAY** have a ``data-yanked`` attribute " +#| "which may have no value, or may have an arbitrary string as a value. The " +#| "presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +#| "indicating that the file pointed to by this particular link has been " +#| "\"Yanked\", and should not generally be selected by an installer, except " +#| "under specific scenarios." +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" "Ссылки в простом репозитории **МОГУТ** иметь атрибут ``данные-янки'', " "который может не иметь значения, или иметь произвольную строку в качестве " @@ -28465,324 +29100,86 @@ msgstr "" "\"выдернут\", и не должен выбираться программой установки, за исключением " "особых случаев." -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:253 +#, fuzzy +#| msgid "" +#| "The value of the ``data-yanked`` attribute, if present, is an arbitrary " +#| "string that represents the reason for why the file has been yanked. Tools " +#| "that process the simple repository API **MAY** surface this string to end " +#| "users." msgid "" "The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"string that represents the reason for why the file has been yanked." msgstr "" "Значение атрибута ``данные выдернуты``, если он присутствует, представляет " "собой произвольную строку, которая отражает причину, по которой файл был " "выдернут. Инструменты, обрабатывающие простой API репозитория, **МОГУТ** " "отображать эту строку для конечных пользователей." -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." -msgstr "" -"Атрибут yanked не является неизменяемым после установки и может быть отменен " -"в будущем (а после отмены может быть также сброшен). Таким образом, " -"пользователи API **МОГУТ** быть в состоянии справиться с тем, что файл с " -"атрибутом yanked может быть \"отменен\" (и даже снова отменен)." - -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" -msgstr "Установщики" - -#: ../source/specifications/simple-repository-api.rst:182 -msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." -msgstr "" -"Для пользователей желательно, чтобы после удаления файла, когда человек в " -"данный момент пытается напрямую установить удаленный файл, это происходило " -"так, как будто файл был удален. Однако если человек сделал это некоторое " -"время назад, а теперь компьютер просто продолжает механически следовать " -"первоначальному приказу установить удаленный файл, то он ведет себя так, как " -"будто он не был удален." - -#: ../source/specifications/simple-repository-api.rst:189 -msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." -msgstr "" -"Программа установки **ДОЛЖНА** игнорировать выдернутые релизы, если " -"ограничения выбора могут быть удовлетворены с помощью не выдернутой версии, " -"и **МОЖЕТ** отказаться от использования выдернутого релиза, даже если это " -"означает, что запрос вообще не может быть удовлетворен. Реализация " -"**ДОЛЖНА** выбрать политику, которая следует духу вышеуказанного намерения и " -"предотвращает \"новые\" зависимости от выдернутых релизов/файлов." - -#: ../source/specifications/simple-repository-api.rst:196 -msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" -msgstr "" -"Что это значит, решает конкретный инсталлятор, чтобы решить, как лучше всего " -"вписать это в общее использование своего инсталлятора. Однако можно " -"предложить два подхода:" - -#: ../source/specifications/simple-repository-api.rst:200 -msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." -msgstr "" -"Выдернутые файлы всегда игнорируются, если только они не являются " -"единственным файлом, соответствующим спецификатору версии, который " -"\"привязывает\" к точной версии с помощью ``==`` (без каких-либо " -"модификаторов, которые делают его диапазоном, таких как ``.*``) или ``===``. " -"В остальном соответствие этому спецификатору версии должно выполняться " -"согласно : ссылка:`спецификации спецификаторов версии <версия-" -"спецификаторы>` для таких вещей, как локальные версии, нулевые подстановки и " -"т.д." - -#: ../source/specifications/simple-repository-api.rst:207 -msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." -msgstr "" -"Выдернутые файлы всегда игнорируются, если только они не являются " -"единственным файлом, который соответствует тому, что указано в файле " -"блокировки (например, ``Pipfile.lock`` или ``poetry.lock``) для установки. В " -"этом случае выдернутый файл **ДОЛЖЕН** не использоваться при создании или " -"обновлении файла блокировки из какого-либо входного файла или команды." - -#: ../source/specifications/simple-repository-api.rst:213 -msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." -msgstr "" -"Независимо от конкретной стратегии, которую выбирает программа установки для " -"принятия решения об установке выдернутых файлов, программа установки " -"**ДОЛЖНА** выдавать предупреждение, когда она принимает решение об установке " -"выдернутого файла. Это предупреждение **МОЖЕТ** использовать значение " -"атрибута ``данные выдернуты'' (если он имеет значение), чтобы предоставить " -"пользователю более конкретную информацию о том, почему этот файл был " -"выдернут." - -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" -msgstr "Зеркала" - -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" -msgstr "Как правило, зеркала можно обрабатывать одним из двух способов:" - -#: ../source/specifications/simple-repository-api.rst:225 -msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." -msgstr "" -"Они могут полностью исключить их из своего простого API репозитория, " -"предоставляя представление репозитория, в котором отображаются только " -"\"активные\", незаанкетированные файлы." - -#: ../source/specifications/simple-repository-api.rst:228 -msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." -msgstr "" -"Они могут выбрать включение выдернутых файлов и дополнительно отразить " -"атрибут ``данные выдернуты``." - -#: ../source/specifications/simple-repository-api.rst:231 -msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." -msgstr "" -"Зеркала **МОГУТ НЕ** зеркалировать выдернутый файл, не зеркалируя также " -"атрибут ``данные выдернуты`` для него." - -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" -msgstr "Версионирование простого API PyPI" - -#: ../source/specifications/simple-repository-api.rst:239 -msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." -msgstr "" -"Эта спецификация предлагает включение мета-тега в ответы на каждый успешный " -"запрос к простой странице API, который содержит атрибут имени ``pypi:" -"repository-version`` и содержимое, которое является совместимым с :ref:" -"``спецификацией версий ` номером версии, который далее " -"ограничивается тем, что он может быть только Major.Minor, и ни одной из " -"дополнительных возможностей, поддерживаемых :ref:``спецификацией версий " -"`." - -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" -msgstr "В итоге это будет выглядеть так:" - -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" -msgstr "При интерпретации версии репозитория:" - -#: ../source/specifications/simple-repository-api.rst:255 -msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." -msgstr "" -"Увеличение основной версии используется для сигнализации об изменении, " -"несовместимом с обратной стороной, когда существующие клиенты уже не смогут " -"полноценно использовать API." - #: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -"Увеличение минорной версии используется для того, чтобы сигнализировать об " -"изменении обратной совместимости, так что ожидается, что существующие " -"клиенты все еще смогут полноценно использовать API." -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -"На усмотрение любых будущих спецификаций остается вопрос о том, что именно " -"считать обратно несовместимым и совместимым изменением, помимо широкого " -"предложения о том, что существующие клиенты смогут \"осмысленно\" продолжать " -"использовать API, и это может включать добавление, модификацию или удаление " -"существующих функций." +"Хранилище **МОЖЕТ** включать атрибут ``data-provenance`` в ссылку на файл. " +"Значение этого атрибута **ДОЛЖНО** представлять собой полностью определенный " +"URL, сигнализирующий о том, что информацию о происхождении файла можно найти " +"по этому URL. Этот URL **ДОЛЖЕН** представлять собой `secure origin `_." #: ../source/specifications/simple-repository-api.rst:268 -msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." -msgstr "" -"Предполагается, что основная версия никогда не будет увеличиваться, и любые " -"будущие основные эволюции API будут использовать другой механизм для " -"эволюции API. Тем не менее, основная версия включена для того, чтобы не было " -"разночтений с будущими версиями (например, гипотетический простой api v2, " -"который жил по адресу /v2/, но который был бы запутан, если бы в репозитории-" -"версия была установлена версия >= 2)." - -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" -msgstr "История версий API" - -#: ../source/specifications/simple-repository-api.rst:278 -msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." -msgstr "" -"Этот раздел содержит только сокращенную историю изменений, отмеченную " -"номером версии API. Полную историю изменений, включая изменения, сделанные " -"до появления версий API, смотрите в :ref:`History `." - -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." -msgstr "" -"Версия API 1.0: Начальная версия API, объявленная с помощью :pep:`629`." - -#: ../source/specifications/simple-repository-api.rst:283 -msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." -msgstr "" -"API версии 1.1: Добавлены метаданные ``версии``, ``файлы[].размер`` и " -"``файлы[].время загрузки`` в сериализацию JSON, объявленную с помощью :pep:" -"`700``." +msgid "The ``data-provenance`` attribute was added with API version 1.3." +msgstr "Атрибут ``data-provenance`` был добавлен в API версии 1.3." -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." -msgstr "" -"API версии 1.2: Добавлены метаданные репозитория \"треки\", объявленные с " -"помощью :pep:`708`." - -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -"API версии 1.3: Добавлены метаданные о происхождении, объявленные с помощью :" -"pep:`740`." - -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" -msgstr "Клиенты" +"Формат связанного провенанса определен в :ref:`index-hosted-attestations`." -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -"Клиенты, взаимодействующие с простым API, **ОБЯЗАНЫ** проверять каждый ответ " -"на версию хранилища, и если эти данные отсутствуют, **ОБЯЗАНЫ** считать, что " -"это версия 1.0." -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -"При столкновении с основной версией, превышающей ожидаемую, клиенты " -"**ДОЛЖНЫ** жестко отказывать с соответствующим сообщением об ошибке для " -"пользователя." -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -"При столкновении с минорной версией, превышающей ожидаемую, клиенты " -"**ДОЛЖНЫ** предупреждать пользователей соответствующим сообщением." -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -"Клиенты **МОГУТ** продолжать использовать обнаружение функций, чтобы " -"определить, какие функции использует хранилище." -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "Предоставление метаданных распространения в API простого репозитория" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -28796,7 +29193,7 @@ msgstr "" "представленный тегом якоря, **МОЖЕТ** содержать файл метаданных Core, " "который не будет изменен при обработке и/или установке дистрибутива." -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -28816,7 +29213,7 @@ msgstr "" "ref:`в базовой спецификации HTML API <простой репозиторий-апи-база>` " "указывается местоположение файла подписи GPG." -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -28832,11 +29229,11 @@ msgstr "" "**МОЖЕТ** использовать ``true`` в качестве значения атрибута, если хэш " "недоступен." -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "Обратная совместимость" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " @@ -28846,7 +29243,7 @@ msgstr "" "метаданные``, ожидается, что инструменты вернутся к своему текущему " "поведению загрузки дистрибутива для проверки метаданных." -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -28859,11 +29256,11 @@ msgstr "" "метаданных. Это похоже на то, как предыдущие добавления атрибута ``данные-`` " "предполагают работу существующих инструментов." -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "Простой API на основе JSON для индексов пакетов Python" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -28876,7 +29273,7 @@ msgstr "" "api-базовая>`) должны быть сериализованы с помощью `JSON `_." -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -28892,7 +29289,7 @@ msgstr "" "согласование содержимого, чтобы позволить клиенту и серверу выбрать " "правильный формат сериализации для обслуживания, т.е. либо HTML, либо JSON." -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -28908,7 +29305,7 @@ msgstr "" "для существующих возможностей, эта спецификация не изменяет существующую " "версию ``1.0``, а вместо этого просто описывает, как сериализовать ее в JSON." -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -28920,7 +29317,7 @@ msgstr "" "изменения в новом формате приведут к тому, что существующие клиенты больше " "не смогут понять этот формат." -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " @@ -28930,7 +29327,7 @@ msgstr "" "добавляются или удаляются функции, но ожидается, что существующие клиенты " "будут продолжать понимать формат." -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " @@ -28940,7 +29337,7 @@ msgstr "" "понять формат, и которые не представляют собой добавления или удаления " "функций, могут происходить без изменения номера версии." -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " @@ -28951,7 +29348,7 @@ msgstr "" "вносящих какие-либо изменения в API, чтобы исследовать и решить, должно ли " "это изменение увеличивать мажорную или минорную версию." -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -28965,7 +29362,7 @@ msgstr "" "быть синхронизированы, но специфика того, как функция сериализуется в каждом " "формате, может отличаться, включая то, присутствует ли эта функция вообще." -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " @@ -28975,21 +29372,26 @@ msgstr "" "URL, которые возвращают данные, интерпретация которых определяется версией " "этих данных, а затем сериализуются в целевой формат сериализации." -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "Сериализация JSON" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 +#, fuzzy +#| msgid "" +#| "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " +#| "serialization format for the already existing API." msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" "Структура URL из : ссылка:`базовой спецификации HTML API <симпл-репозиторий-" "апи-база>` по-прежнему применима, так как эта спецификация лишь добавляет " "дополнительный формат сериализации для уже существующего API." -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" @@ -28997,7 +29399,7 @@ msgstr "" "Следующие ограничения применяются ко всем сериализованным ответам JSON, " "описанным в данной спецификации:" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." @@ -29005,7 +29407,7 @@ msgstr "" "Все ответы JSON *всегда* будут представлять собой объект JSON, а не массив " "или другой тип." -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -29017,7 +29419,7 @@ msgstr "" "правильное местоположение. Если они относительные, то они относятся к " "текущему URL, как если бы это был HTML." -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." @@ -29025,7 +29427,7 @@ msgstr "" "Дополнительные ключи могут быть добавлены к любым объектам словаря в ответах " "API, и клиенты **МОГУТ** игнорировать ключи, которые они не понимают." -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." @@ -29033,7 +29435,7 @@ msgstr "" "Все JSON-ответы имеют ключ ``meta``, который содержит информацию, " "относящуюся к самому ответу, а не к его содержимому." -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." @@ -29055,7 +29457,7 @@ msgstr "" "Все требования : ссылка:`базовой спецификации HTML API <простой репозиторий-" "апи-база>`, не относящиеся к HTML, остаются в силе." -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." @@ -29064,11 +29466,7 @@ msgstr "" "частные для использования индексным сервером. Ни один будущий стандарт не " "будет присваивать значение такому ключу." -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "Список проектов" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" @@ -29076,7 +29474,7 @@ msgstr "" "Корневой URL ``/`` для этой спецификации (который представляет собой базовый " "URL) будет представлять собой словарь в кодировке JSON, имеющий два ключа:" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." @@ -29085,8 +29483,8 @@ msgstr "" "одним ключом, ``название``, который представляет собой строку с названием " "проекта." -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." @@ -29094,12 +29492,12 @@ msgstr "" "``meta``: Общие метаданные ответа, как `описано ранее `__." -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "В качестве примера:" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -29115,7 +29513,7 @@ msgstr "" "на то, что это ненормализованное или нормализованное имя, - это полагаться " "на детали реализации данного репозитория." -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -29203,23 +29627,23 @@ msgstr "" "упорядочены с использованием правил VSS. Тем не менее, серверы **ДОЛЖНЫ** " "использовать нормализованные версии VSS, где это возможно." -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "Ключ ``версии`` был добавлен в API версии 1.1." -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "Каждый отдельный словарь файлов имеет следующие ключи:" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "``имя файла``: Имя представляемого файла." -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "``url``: URL, с которого может быть получен файл." -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -29233,7 +29657,7 @@ msgstr "" "вообще ничего). Имена хэшей **ОБЯЗАТЕЛЬНО** всегда должны быть приведены к " "нижнему регистру." -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " @@ -29243,7 +29667,7 @@ msgstr "" "однако **НАСТОЯТЕЛЬНО** рекомендуется всегда включать хотя бы один " "безопасный, гарантированно доступный хэш." -#: ../source/specifications/simple-repository-api.rst:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -29260,7 +29684,7 @@ msgstr "" "включен. На момент создания данной спецификации рекомендуется использовать " "``sha256``." -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -29272,7 +29696,7 @@ msgstr "" "инструменты установки **ДОЛЖНЫ** игнорировать загрузку при установке на " "версию Python, которая не удовлетворяет этому требованию." -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " @@ -29282,7 +29706,7 @@ msgstr "" "HTML API ``, ключ ``запросы-python`` не требует " "никакого специального экранирования, кроме того, что JSON делает естественно." -#: ../source/specifications/simple-repository-api.rst:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -29299,7 +29723,7 @@ msgstr "" "словарем, отображающим имена хэшей на шестнадцатеричный дайджест хэша " "метаданных." -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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 " @@ -29308,7 +29732,7 @@ msgstr "" "Если это словарь хэшей, а не булевых значений, то все те же требования и " "рекомендации, что и для ключа ``хэши``, справедливы и для этого ключа." -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:570 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 " @@ -29318,7 +29742,7 @@ msgstr "" "не существовать. Если значение ключа истинно, то файл метаданных " "присутствует, а если ложно, то нет." -#: ../source/specifications/simple-repository-api.rst:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." @@ -29326,7 +29750,7 @@ msgstr "" "Рекомендуется, чтобы серверы по возможности предоставляли хэши файлов " "метаданных." -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." @@ -29334,7 +29758,7 @@ msgstr "" "``dist-info-metadata``: **опциональный**, устаревший псевдоним для ``core-" "metadata``." -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." @@ -29342,7 +29766,7 @@ msgstr "" "Индексные клиенты **МОГУТ** использовать этот ключ, если он присутствует, в " "качестве традиционного запасного варианта для ``ядра-метаданных``." -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." @@ -29350,7 +29774,7 @@ msgstr "" "``dist-info-metadata`` был стандартизирован в :pep:`658` и переименован в " "``core-metadata`` в :pep:`714`." -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -29365,15 +29789,23 @@ msgstr "" "Если этот ключ не существует, то подпись может существовать, а может и не " "существовать." -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 +#, fuzzy +#| 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 indicate that a file has been yanked with a specific reason. If " +#| "the ``yanked`` key is present and is a truthy value, then it **SHOULD** " +#| "be interpreted as indicating that the file pointed to by the ``url`` " +#| "field has been \"Yanked\" as per :ref:`the API yank specification `." 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" "``yanked``: **опциональный** ключ, который может быть либо булевым " "значением, указывающим, был ли файл выдернут, либо непустой, но произвольной " @@ -29383,7 +29815,7 @@ msgstr "" "``url``, был \"Yanked\" согласно : ссылка:спецификации API yank <простой " "репозиторий-апи-yank>`." -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." @@ -29391,11 +29823,11 @@ msgstr "" "``размер``: **обязательный** ключ. Он **ДОЛЖЕН** содержать целое число, " "которое представляет собой размер файла в байтах." -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "Ключ ``размер`` был добавлен в API версии 1.1." -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **MUST** contain a " "valid ISO 8601 date/time string in the format ``yyyy-mm-ddThh:mm:ss." @@ -29406,7 +29838,7 @@ msgstr "" "``yyyy-mm-ddThh:mm:ss.ffffffZ``, которая представляет время, когда файл был " "загружен в индекс." -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -29420,11 +29852,11 @@ msgstr "" "точности. Если сервер не записывает информацию о времени загрузки файла, он " "**МОЖЕТ** опустить ключ ``upload-time``." -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "Ключ ``время загрузки`` был добавлен в API версии 1.1." -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -29437,11 +29869,11 @@ msgstr "" "правилам, что и ``data-provenance`` в спецификации HTML API ` в :ref:`base HTML API`." -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "Поле ``provenance`` было добавлено в API версии 1.3." -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -29529,11 +29961,11 @@ msgstr "" "далее определяет ``текст/html`` как псевдоним для типа содержимого " "``приложение/vnd.pypi. простой.v1+html``." -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "Выбор версии + формата" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -29547,7 +29979,7 @@ msgstr "" "новая основная версия API могла быть добавлена без нарушения работы " "существующих клиентов, ожидающих предыдущую версию API." -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" @@ -29565,7 +29997,7 @@ msgstr "" "Хотя эта спецификация не может полностью описать всю процедуру согласования " "содержимого на сервере, ее суть примерно такова:" -#: ../source/specifications/simple-repository-api.rst:705 +#: ../source/specifications/simple-repository-api.rst:724 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." @@ -29573,7 +30005,7 @@ msgstr "" "Клиент отправляет HTTP-запрос, содержащий заголовок ``Принять``, в котором " "перечислены все типы содержимого версии+формата, которые он способен понять." -#: ../source/specifications/simple-repository-api.rst:707 +#: ../source/specifications/simple-repository-api.rst:726 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 " @@ -29583,7 +30015,7 @@ msgstr "" "содержимого, затем возвращает ответ, используя этот тип содержимого " "(рассматривая отсутствие заголовка ``принять`` как ``принять: */*``)." -#: ../source/specifications/simple-repository-api.rst:710 +#: ../source/specifications/simple-repository-api.rst:729 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 " @@ -29592,7 +30024,7 @@ msgstr "" "Если сервер не поддерживает ни один из типов содержимого в заголовке " "``принять``, он может выбрать один из 3 вариантов ответа:" -#: ../source/specifications/simple-repository-api.rst:714 +#: ../source/specifications/simple-repository-api.rst:733 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." @@ -29600,7 +30032,7 @@ msgstr "" "Выберите тип содержимого по умолчанию, отличный от того, что запросил " "клиент, и верните ответ с этим типом." -#: ../source/specifications/simple-repository-api.rst:716 +#: ../source/specifications/simple-repository-api.rst:735 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 " @@ -29610,7 +30042,7 @@ msgstr "" "запрошенных типов содержимого не был доступен, и сервер не смог или не " "захотел выбрать тип содержимого по умолчанию для ответа." -#: ../source/specifications/simple-repository-api.rst:719 +#: ../source/specifications/simple-repository-api.rst:738 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." @@ -29618,7 +30050,7 @@ msgstr "" "Возвращает ответ HTTP ``300 Множество вариантов``, содержащий список всех " "возможных ответов, которые могли быть выбраны." -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." @@ -29626,7 +30058,7 @@ msgstr "" "Клиент интерпретирует ответ, обрабатывая различные типы ответов, которые мог " "дать сервер." -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -29638,7 +30070,7 @@ msgstr "" "**ДОЛЖНЫ** быть готовы обрабатывать все возможные ответы тем способом, " "который наиболее удобен для них." -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -29656,7 +30088,7 @@ msgstr "" "случае, так что в лучшем случае этот ответ будет рассматриваться так же, как " "и ошибка ``406 не принято``." -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -29670,7 +30102,7 @@ msgstr "" "pypi.simple.latest+json``, который возвращает ответ ``v1.x'', должен иметь " "``Content-Type`` из ``application/vnd.pypi.simple.v1+json``)." -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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 " @@ -29680,19 +30112,19 @@ msgstr "" "содержимого, которые клиент понимает и может обрабатывать. Он поддерживает " "три различных формата для каждого запрашиваемого типа содержимого:" -#: ../source/specifications/simple-repository-api.rst:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "``$тип/$подтип``" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "``$тип/*``" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "``*/*``" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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 " @@ -29702,7 +30134,7 @@ msgstr "" "$подтип``, поскольку это единственный способ действительно указать нужную " "версию и формат." -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -29718,7 +30150,7 @@ msgstr "" "синтаксис ``принять`` в заголовке ``значение качества `_." -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -29734,7 +30166,7 @@ msgstr "" "более низким качеством, и любая запись без присутствующего качества будет по " "умолчанию иметь качество ``1``." -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -29745,7 +30177,7 @@ msgstr "" "запрошенных ими типов содержимого, независимо от их приоритета, и даже может " "вернуть тип содержимого, который они **не* запрашивали." -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -29764,11 +30196,11 @@ msgstr "" "_internal/index/collector.py#L123-L150>`_, так что риск реальных поломок " "невелик." -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "Пример работы клиента может выглядеть следующим образом:" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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 " @@ -29778,11 +30210,11 @@ msgstr "" "удалит типы контента, которые ему не нужны, из заголовка ``принять``, и " "превратит их получение в ошибку." -#: ../source/specifications/simple-repository-api.rst:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "Альтернативные механизмы переговоров" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -29797,11 +30229,11 @@ msgstr "" "предусмотрены альтернативные механизмы согласования, которые могут " "*факультативно* использоваться вместо него." -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "Параметр URL" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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 " @@ -29810,7 +30242,7 @@ msgstr "" "Серверы, реализующие Simple API, могут поддерживать параметр URL с именем " "``формат``, чтобы позволить клиентам запрашивать определенную версию URL." -#: ../source/specifications/simple-repository-api.rst:851 +#: ../source/specifications/simple-repository-api.rst:870 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 " @@ -29820,7 +30252,7 @@ msgstr "" "содержимого. Передача нескольких типов содержимого, подстановочных карт, " "качественных значений и т. д. **не поддерживается." -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -29833,7 +30265,7 @@ msgstr "" "документации или примечаниях можно было ссылаться на конкретную " "версию+формат." -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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." @@ -29841,7 +30273,7 @@ msgstr "" "Серверы, не поддерживающие этот параметр, могут возвращать ошибку при его " "наличии или просто игнорировать его присутствие." -#: ../source/specifications/simple-repository-api.rst:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -29858,11 +30290,11 @@ msgstr "" "Недоступен``, ``303 Несколько вариантов`` или выбор типа по умолчанию для " "возврата)." -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "Конфигурация конечной точки" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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 " @@ -29873,7 +30305,7 @@ msgstr "" "серверам выбирать, какой из доступных типов содержимого является их типом по " "умолчанию." -#: ../source/specifications/simple-repository-api.rst:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -29885,7 +30317,7 @@ msgstr "" "свой клиент для выбора нужной им версии, то такая конфигурация " "поддерживается." -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -29902,7 +30334,7 @@ msgstr "" "``Принять``, сервер может проигнорировать его и вернуть тип содержимого, " "соответствующий данной конечной точке." -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -29914,11 +30346,11 @@ msgstr "" "репозитория, и при запросе к этому серверу выдавать заголовок ``Принять``, " "который *только* включает правильный тип содержимого." -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "Поддержка TUF - PEP 458" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -29936,7 +30368,7 @@ msgstr "" "клиент TUF не может справиться с тем, что цель может иметь несколько " "различных представлений, которые хэшируются по-разному." -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -29948,7 +30380,7 @@ msgstr "" "путь типа ``простой/ПРОЕКТ/`` неприемлем, потому что технически он указывает " "на каталог." -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -29962,7 +30394,7 @@ msgstr "" "который нужно получить. То же самое можно сказать и о других аспектах " "фактического HTTP-запроса, таких как заголовок ``принять``." -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -29974,7 +30406,7 @@ msgstr "" "данная спецификация откладывает принятие решения о том, как именно " "представлять это в метаданных :pep:`458`." -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -29990,7 +30422,7 @@ msgstr "" "формат v1 HTML будет ``простой/ПРОЕКТ/vnd.pypi. простой.v1.html``, а формат " "v1 JSON будет ``простой/ПРОЕКТ/vnd.pypi.простой.v1.json``." -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " @@ -30000,7 +30432,7 @@ msgstr "" "``приложения/vnd.pypi. простой.v1+html`` при взаимодействии через TUF, " "скорее всего, будет разумнее нормализовать к более явному имени." -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." @@ -30008,7 +30440,7 @@ msgstr "" "Аналогично, метаверсия ``последней`` не должна включаться в цели, должны " "поддерживаться только явно объявленные версии." -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -30020,7 +30452,7 @@ msgstr "" "реализации этой спецификации, но он **не** представляет собой никаких " "требований по соответствию этим решениям." -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -30034,11 +30466,11 @@ msgstr "" "использование API обеспечивало защитные ограждения, которые пытаются " "подтолкнуть клиента к наилучшему выбору." -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "Рекомендуется использовать серверы:" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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 " @@ -30049,7 +30481,7 @@ msgstr "" "крайней мере, пока они получают нетривиальный трафик, использующий ответы " "HTML." -#: ../source/specifications/simple-repository-api.rst:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -30060,7 +30492,7 @@ msgstr "" "с которыми сервер умеет работать, сервер не должен возвращать ответ ``300 " "Множественный выбор``, а вместо этого возвращает ответ ``406 Неприемлемо``." -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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." @@ -30069,7 +30501,7 @@ msgstr "" "предпочесть возвращать ответ ``200 OK`` в ожидаемом типе содержимого для " "данной конечной точки." -#: ../source/specifications/simple-repository-api.rst:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -30084,11 +30516,11 @@ msgstr "" "использовать тип содержимого ``текст/html`` только в качестве последнего " "средства." -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "Рекомендуется, чтобы клиенты:" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." @@ -30096,7 +30528,7 @@ msgstr "" "Поддерживать все 3 типа контента, описанные в данной спецификации, используя " "согласование контента с сервером, до тех пор, пока это возможно." -#: ../source/specifications/simple-repository-api.rst:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." @@ -30104,7 +30536,7 @@ msgstr "" "При составлении заголовка ``Принять`` включите в него все типы содержимого, " "которые вы поддерживаете." -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -30118,7 +30550,7 @@ msgstr "" "стандартной библиотеки и беспокоитесь о том, что некоторые типы HTML-ответов " "могут быть не в состоянии разобрать в некоторых крайних случаях)." -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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 " @@ -30129,7 +30561,7 @@ msgstr "" "html``, если только это не единственный тип содержимого, который вы " "запрашиваете." -#: ../source/specifications/simple-repository-api.rst:984 +#: ../source/specifications/simple-repository-api.rst:1003 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." @@ -30137,7 +30569,7 @@ msgstr "" "Явно выбирайте версии, которые они ищут, вместо того чтобы использовать " "``последнюю`` мета-версию во время обычной работы." -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." @@ -30145,19 +30577,19 @@ msgstr "" "Проверьте ``Контент-Тип`` в ответе и убедитесь, что он соответствует тому, " "что вы ожидали." -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "Сентябрь 2015 года: начальная форма формата HTML, в :pep:`503`" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "Июль 2016 г: Метаданные Требуется-Python, в обновлении :pep:`503`" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "Май 2019: поддержка \"янки\", в :pep:`592`" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" @@ -30165,14 +30597,14 @@ msgstr "" "Июль 2020 года: Соглашение о версиях API и метаданные, а также объявление " "формата HTML как API v1, в :pep:`629`" -#: ../source/specifications/simple-repository-api.rst:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" "Май 2021: предоставление метаданных пакета независимо от пакета, в :pep:`658`" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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`" @@ -30180,7 +30612,7 @@ msgstr "" "Май 2022: начальная форма формата JSON, с механизмом выбора между ними для " "клиентов, и объявление обоих форматов как API v1, в :pep:`691`" -#: ../source/specifications/simple-repository-api.rst:1004 +#: ../source/specifications/simple-repository-api.rst:1023 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" @@ -30188,7 +30620,7 @@ msgstr "" "Октябрь 2022: версии проектов, размер файлов и время загрузки в формате " "JSON, в :pep:`700`" -#: ../source/specifications/simple-repository-api.rst:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" @@ -30196,13 +30628,29 @@ msgstr "" "Июнь 2023: переименование поля, предоставляющего метаданные пакета " "независимо от пакета, в :pep:`714`" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 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:1028 +#, fuzzy +#| msgid "" +#| "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" +#| "`740`" +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" +"Ноябрь 2024: метаданные о проверке в форматах HTML и JSON, в :pep:`740`" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "Формат распространения в исходных кодах" @@ -34340,6 +34788,13 @@ msgstr "" "над которым ведется работа, будет поддерживать распространение в виде " "``pip``-инсталлируемого Python-пакета." +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "Упаковка Python'ьих проектов" @@ -35107,6 +35562,41 @@ msgstr "" "Если вы только начинаете с Python упаковки, рекомендуется придерживаться " "*регулярных пакетов* и ``__init__.py`` (даже если файл пуст)." +#, fuzzy +#~| msgid ":ref:`pyproject-toml-spec`" +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr ":ref:`pyproject-toml-spec`" + +#~ msgid "" +#~ "Below the root URL is another URL for each individual project contained " +#~ "within a repository. The format of this URL is ``//`` where the " +#~ "```` is replaced by the normalized name for that project, so a " +#~ "project named \"HolyGrail\" would have a URL like ``/holygrail/``. This " +#~ "URL must respond with a valid HTML5 page with a single anchor element per " +#~ "file for the project. The href attribute **MUST** be a URL that links to " +#~ "the location of the file for download, and the text of the anchor tag " +#~ "**MUST** match the final path component (the filename) of the URL. The " +#~ "URL **SHOULD** include a hash in the form of a URL fragment with the " +#~ "following syntax: ``#=``, where ```` is " +#~ "the lowercase name of the hash function (such as ``sha256``) and " +#~ "```` is the hex encoded digest." +#~ msgstr "" +#~ "Ниже корневого URL находится еще один URL для каждого отдельного проекта, " +#~ "содержащегося в репозитории. Формат этого URL - ``/<проект>/``, где " +#~ "``<проект>`` заменяется нормализованным именем проекта, поэтому проект с " +#~ "именем \"HolyGrail\" будет иметь URL вида ``/holygrail/``. В ответ на " +#~ "этот URL должна появиться корректная HTML5-страница с одним элементом " +#~ "якоря для каждого файла проекта. Атрибут href **ДОЛЖЕН** быть URL, " +#~ "который ссылается на местоположение файла для загрузки, а текст тега " +#~ "якоря **ДОЛЖЕН** совпадать с конечным компонентом пути (именем файла) в " +#~ "URL. URL **ДОЛЖЕН** включать хэш в виде фрагмента URL со следующим " +#~ "синтаксисом: ``#<хэш-имя>=<хэш-значение>``, где ``<хэш-имя>`` - строчное " +#~ "имя хэш-функции (например, ``sha256``), а ``<хэш-значение>`` - " +#~ "шестнадцатеричное кодирование дайджеста." + +#~ msgid "Adding \"Yank\" Support to the Simple API" +#~ msgstr "Добавление поддержки \"Янк\" в простой API" + #~ msgid "Signing the distribution packages" #~ msgstr "Подписание пакетов распространения" diff --git a/locales/sai/LC_MESSAGES/messages.po b/locales/sai/LC_MESSAGES/messages.po index 6cc6560e3..88f8d3f82 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -163,11 +163,11 @@ msgid "" "`this guide`_ before translating on Weblate." msgstr "" -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -183,22 +183,22 @@ msgid "" "original reference:" msgstr "" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " "you'll need:" msgstr "" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9925,32 +9925,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9959,7 +9967,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9983,83 +9991,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10068,26 +10076,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10095,28 +10103,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10124,33 +10132,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13525,7 +13533,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13535,7 +13543,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13628,9 +13636,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16490,29 +16500,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17325,6 +17335,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17900,7 +18037,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18690,10 +18827,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18856,6 +18993,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19105,6 +19374,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19837,7 +20107,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19852,7 +20122,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19867,14 +20137,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21264,6 +21530,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21303,433 +21585,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21738,7 +22012,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21750,7 +22024,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21760,18 +22034,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21779,11 +22053,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21791,7 +22065,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21801,7 +22075,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21811,7 +22085,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21819,28 +22093,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21849,37 +22123,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21887,19 +22161,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21958,7 +22228,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22019,23 +22311,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22044,14 +22336,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22061,7 +22353,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22069,14 +22361,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22086,45 +22378,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22133,35 +22425,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22170,11 +22461,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22182,11 +22473,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22249,11 +22540,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22262,65 +22553,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22328,7 +22619,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22339,7 +22630,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22348,33 +22639,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22384,7 +22675,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22394,7 +22685,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22402,7 +22693,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22413,22 +22704,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22437,25 +22728,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22463,13 +22754,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22479,18 +22770,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22498,7 +22789,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22508,7 +22799,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22516,11 +22807,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22531,7 +22822,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22539,7 +22830,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22548,7 +22839,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22556,7 +22847,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22566,20 +22857,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22587,7 +22878,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22596,18 +22887,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22615,13 +22906,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22630,23 +22921,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22655,73 +22946,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25728,6 +26030,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/si/LC_MESSAGES/messages.po b/locales/si/LC_MESSAGES/messages.po index dd676d678..88b66bf7c 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2022-06-11 08:19+0000\n" "Last-Translator: Kushan Gunasekera \n" "Language-Team: Sinhala `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9929,32 +9929,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9963,7 +9971,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9987,83 +9995,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10072,26 +10080,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10099,28 +10107,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10128,33 +10136,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13529,7 +13537,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13539,7 +13547,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13632,9 +13640,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16494,29 +16504,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17329,6 +17339,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17904,7 +18041,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18694,10 +18831,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18860,6 +18997,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19109,6 +19378,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19841,7 +20111,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19856,7 +20126,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19871,14 +20141,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21268,6 +21534,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21307,433 +21589,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21742,7 +22016,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21754,7 +22028,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21764,18 +22038,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21783,11 +22057,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21795,7 +22069,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21805,7 +22079,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21815,7 +22089,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21823,28 +22097,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21853,37 +22127,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21891,19 +22165,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21962,7 +22232,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22023,23 +22315,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22048,14 +22340,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22065,7 +22357,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22073,14 +22365,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22090,45 +22382,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22137,35 +22429,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22174,11 +22465,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22186,11 +22477,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22253,11 +22544,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22266,65 +22557,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22332,7 +22623,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22343,7 +22634,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22352,33 +22643,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22388,7 +22679,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22398,7 +22689,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22406,7 +22697,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22417,22 +22708,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22441,25 +22732,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22467,13 +22758,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22483,18 +22774,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22502,7 +22793,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22512,7 +22803,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22520,11 +22811,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22535,7 +22826,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22543,7 +22834,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22552,7 +22843,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22560,7 +22851,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22570,20 +22861,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22591,7 +22882,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22600,18 +22891,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22619,13 +22910,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22634,23 +22925,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22659,73 +22950,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25732,6 +26034,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/sk/LC_MESSAGES/messages.po b/locales/sk/LC_MESSAGES/messages.po index b60a27347..9d3d29a54 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2024-11-02 00:54+0000\n" "Last-Translator: Milan Šalka \n" "Language-Team: Slovak `. You can install or upgrade nox using ``pip``:" msgstr "" ":doc:`Nox `. Môžete nainštalovať alebo upgradovať nox pomocou " "``pip``:" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions ` nainštalovať Python 3.11 na vašom operačnom systéme." -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 msgid "" "To build the guide, run the following shell command in the project's root " "folder:" @@ -275,7 +275,7 @@ msgstr "" "Ak chcete vybudovať sprievodcu, spustiť nasledujúci príkaz shell v priečinku " "koreňa projektu:" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -286,7 +286,7 @@ msgstr "" "otvoriť súbor ``index.html`` pre zobrazenie sprievodcu v prehliadači, ale " "odporúča sa slúžiť sprievodcu pomocou servera HTTP." -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" @@ -294,15 +294,15 @@ msgstr "" "Môžete si vytvoriť sprievodcu a slúžiť cez HTTP server pomocou nasledujúceho " "príkazu:" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "Sprievodca bude browsable cez http://localhost:8000." -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "Kde je sprievodca nasadený" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " @@ -312,11 +312,11 @@ msgstr "" "readthedocs.org/projects/python-packaging-user-guide/. Slúži z vlastnej " "domény a predaný Fast.ly." -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "Štýlový sprievodca" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -328,11 +328,11 @@ msgstr "" "príspevky pomôžu pridať do cohesive celé a uľahčujú, aby boli prijaté do " "projektu." -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "Účel" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." @@ -340,11 +340,11 @@ msgstr "" "Účelom |PyPUG| je byť autoritačný zdroj o tom, ako balík, publikovať a " "nainštalovať Python projekty pomocou súčasných nástrojov." -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "Rozsah" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." @@ -352,7 +352,7 @@ msgstr "" "Sprievodca je určený na odpoveď na otázky a riešenie problémov s presnými a " "zameranými odporúčaniami." -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -366,15 +366,15 @@ msgstr "" "zatiaľ čo tento sprievodca popisuje iba časti pip, ktoré sú potrebné na " "dokončenie konkrétnych úloh opísaných v tomto sprievodcovi." -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "Aktuality" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "Publikum tohto sprievodcu je niekto, kto používa Python s balíkmi." -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " @@ -384,7 +384,7 @@ msgstr "" "zdieľať svoj vek, pohlavie, vzdelanie, kultúra a ďalšie, ale zaslúžia sa " "dozvedieť o balení rovnako ako vy." -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " @@ -394,11 +394,11 @@ msgstr "" "sa ako programátori. publikum tohto sprievodcu zahŕňa astronómov alebo " "maliarov alebo študentov, ako aj profesionálnych vývojárov softvéru." -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "Hlas a tón" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." @@ -406,7 +406,7 @@ msgstr "" "Pri písaní tohto sprievodcu sa snaží písať hlasom, ktorý je prístupný a " "pokorený, aj keď máte všetky odpovede." -#: ../source/contribute.rst:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -418,7 +418,7 @@ msgstr "" "vám položila otázku a poznáte odpoveď. Ako reagujete? *To * je, ako by ste " "mali napísať tento sprievodca." -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -433,7 +433,7 @@ msgstr "" "fussssy gramatiky. Tie sú týmto udelené povolenie na ukončenie vety v " "predložke, ak to chcete skončiť." -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -444,15 +444,15 @@ msgstr "" "úvodný výukový program, je to v poriadku, aby sa vtip, ale ak pokrývate " "citlivé bezpečnostné odporúčanie, môžete sa vyhnúť vtipom úplne." -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "Dohovory a mechaniky" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "**Napíšte čitateľovi**" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -472,11 +472,11 @@ msgstr "Právo: Môžete ho nainštalovať beh.." msgid "Right: To install it, run…" msgstr "Právo: Ak chcete nainštalovať, spustiť.." -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "** Stavebné predpoklady**" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -488,22 +488,22 @@ msgstr "" "niekedy vidí. Ak budete robiť predpoklady, potom povedzte, aké predpoklady " "budete robiť." -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "**Cross-referenčné veľkorysé**" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " "search." msgstr "" -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -525,11 +525,11 @@ msgstr "" msgid "Right: …hosted on GitHub." msgstr "" -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -548,11 +548,11 @@ msgstr "" msgid "Right: A maintainer uploads the file. Then the maintainer…" msgstr "" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -560,7 +560,7 @@ msgid "" "might be *Install MyLibrary*." msgstr "" -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -574,11 +574,11 @@ msgstr "" msgid "Right: Things you should know about Python" msgstr "" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -2698,7 +2698,7 @@ msgid "" msgstr "" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 msgid "Versioning" msgstr "" @@ -4067,7 +4067,7 @@ msgstr "Poznámka" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "" @@ -8648,9 +8648,9 @@ msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -10089,32 +10089,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -10123,7 +10131,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10147,83 +10155,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10232,26 +10240,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10259,28 +10267,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10288,33 +10296,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13691,7 +13699,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13701,7 +13709,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13794,9 +13802,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16666,29 +16676,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17505,6 +17515,135 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +#, fuzzy +#| msgid "Translations" +msgid "Installers" +msgstr "Preklady" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -18082,7 +18221,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18872,10 +19011,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -19038,6 +19177,144 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +#| msgid "Project name" +msgid "Project Status Markers" +msgstr "Meno projektu" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +#| msgid "Translations" +msgid "Installer semantics: none." +msgstr "Preklady" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +#| msgid "Translations" +msgid "Installer semantics:" +msgstr "Preklady" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "Specifications" @@ -19289,6 +19566,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 #, fuzzy #| msgid "Project name" @@ -20027,8 +20305,10 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" -msgstr "" +#, fuzzy +#| msgid "Project name" +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr "Meno projektu" #: ../source/specifications/pylock-toml.rst:676 msgid "" @@ -20042,7 +20322,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -20057,16 +20337,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -#, fuzzy -#| msgid "Project name" -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "Meno projektu" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21458,6 +21732,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21499,435 +21789,431 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" #: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 -msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 -msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 -msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" -msgstr "" +#: ../source/specifications/simple-repository-api.rst:121 +#, fuzzy +#| msgid "Translations" +msgid "HTML Serialization" +msgstr "Preklady" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +#, fuzzy +#| msgid "Project" +msgid "Project List" +msgstr "Projekt" + +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 #, fuzzy -#| msgid "Translations" -msgid "Installers" -msgstr "Preklady" +#| msgid "Project name" +msgid "Project Detail" +msgstr "Meno projektu" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:158 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:183 +msgid "" +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:202 +msgid "" +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:211 +msgid "" +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:220 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:242 +msgid "" +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:245 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:247 +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:253 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:261 +msgid "" +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:288 +msgid "" +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21936,7 +22222,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21948,7 +22234,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21958,18 +22244,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21977,11 +22263,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21989,7 +22275,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21999,7 +22285,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -22009,7 +22295,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -22017,28 +22303,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -22047,37 +22333,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -22085,19 +22371,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -#, fuzzy -#| msgid "Project" -msgid "Project List" -msgstr "Projekt" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -22158,7 +22438,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22221,23 +22521,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22246,14 +22546,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22263,7 +22563,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22271,14 +22571,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22288,45 +22588,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22335,35 +22635,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22372,11 +22671,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22384,11 +22683,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22451,11 +22750,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22464,65 +22763,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22530,7 +22829,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22541,7 +22840,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22550,33 +22849,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22586,7 +22885,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22596,7 +22895,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22604,7 +22903,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22615,22 +22914,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22639,25 +22938,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22665,13 +22964,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22681,18 +22980,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22700,7 +22999,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22710,7 +23009,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22718,11 +23017,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22733,7 +23032,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22741,7 +23040,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22750,7 +23049,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22758,7 +23057,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22768,20 +23067,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22789,7 +23088,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22798,18 +23097,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22817,13 +23116,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22832,23 +23131,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22857,73 +23156,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25934,6 +26244,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" @@ -26469,3 +26786,8 @@ msgid "" "recommended to stick with *regular packages* and ``__init__.py`` (even if " "the file is empty)." msgstr "" + +#, fuzzy +#~| msgid "Project name" +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr "Meno projektu" diff --git a/locales/ta/LC_MESSAGES/messages.po b/locales/ta/LC_MESSAGES/messages.po index 5715dd2d0..3f315ae5f 100644 --- a/locales/ta/LC_MESSAGES/messages.po +++ b/locales/ta/LC_MESSAGES/messages.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-07-19 06:36+0000\n" "Last-Translator: தமிழ்நேரம் \n" -"Language-Team: Tamil \n" +"Language-Team: Tamil \n" "Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -202,11 +202,11 @@ msgstr "" "மறுசீரமைப்பு (RST) தொடரியல் உங்களுக்கு தெரிந்திருக்கவில்லை என்றால், வெப்லேட்டில் " "மொழிபெயர்ப்பதற்கு முன் `இந்த வழிகாட்டி`_ ஐப் படிக்கவும்." -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "** உரையை நேரடியாக மொழிபெயர்க்க வேண்டாம் **" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -223,11 +223,11 @@ msgid "" msgstr "" "வலது: பின்வரும் உரையை உங்கள் சொந்த மொழியுடன் மொழிபெயர்த்து அசல் குறிப்பைச் சேர்க்கவும்:" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "வழிகாட்டியை உள்நாட்டில் உருவாக்குதல்" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " @@ -237,13 +237,13 @@ msgstr "" "உருவாக்குவது பயனுள்ளதாக இருக்கும். இந்த வழிகாட்டியை உள்ளூரில் உருவாக்க, உங்களுக்குத் " "தேவை:" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr "" ": டாக்: `NOX `. `` பிப்`` ஐப் பயன்படுத்தி நீங்கள் NOX ஐ நிறுவலாம் அல்லது " "மேம்படுத்தலாம்:" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions ` உங்கள் இயக்க முறைமையில் பைதான் 3.11 ஐ நிறுவ." -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 msgid "" "To build the guide, run the following shell command in the project's root " "folder:" msgstr "" "வழிகாட்டியை உருவாக்க, திட்டத்தின் ரூட் கோப்புறையில் பின்வரும் செல் கட்டளையை இயக்கவும்:" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -272,7 +272,7 @@ msgstr "" "வலை உலாவியில் வழிகாட்டியைக் காண நீங்கள் `` index.html`` கோப்பைத் திறக்கலாம், ஆனால் HTTP " "சேவையகத்தைப் பயன்படுத்தி வழிகாட்டியை வழங்க பரிந்துரைக்கப்படுகிறது." -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" @@ -280,15 +280,15 @@ msgstr "" "நீங்கள் வழிகாட்டியை உருவாக்கி பின்வரும் கட்டளையைப் பயன்படுத்தி ஒரு HTTP சேவையகம் வழியாக " "பணி செய்யலாம்:" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "வழிகாட்டி http: // localhost: 8000 வழியாக உலாவக்கூடியதாக இருக்கும்." -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "வழிகாட்டி பயன்படுத்தப்படும் இடத்தில்" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " @@ -298,11 +298,11 @@ msgstr "" "python-packaging-user-guide/ இல் பயன்படுத்தப்படுகிறது. இது ஒரு தனிப்பயன் " "களத்திலிருந்து வழங்கப்படுகிறது மற்றும் ஃபாச்ட்.லியின் முன்னால் உள்ளது." -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "நடை வழிகாட்டி" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -314,11 +314,11 @@ msgstr "" "பின்பற்றுவதன் மூலம், உங்கள் பங்களிப்புகள் ஒரு ஒருங்கிணைந்த முழுமையைச் சேர்க்க உதவும் மற்றும் " "உங்கள் பங்களிப்புகளை திட்டத்தில் ஏற்றுக்கொள்வதை எளிதாக்கும்." -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "நோக்கம்" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." @@ -326,11 +326,11 @@ msgstr "" "| பைபக் | இன் நோக்கம் தற்போதைய கருவிகளைப் பயன்படுத்தி பைதான் திட்டங்களை எவ்வாறு தொகுத்தல், " "வெளியிடுவது மற்றும் நிறுவுவது என்பதற்கான அதிகாரப்பூர்வ ஆதாரமாக இருக்க வேண்டும்." -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "நோக்கம்" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." @@ -338,7 +338,7 @@ msgstr "" "வழிகாட்டி என்பது கேள்விகளுக்கு பதிலளிப்பதற்கும் துல்லியமான மற்றும் கவனம் செலுத்தும் " "பரிந்துரைகளுடன் சிக்கல்களைத் தீர்ப்பதற்கும் ஆகும்." -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -352,15 +352,15 @@ msgstr "" "நேரத்தில் இந்த வழிகாட்டி இந்த வழிகாட்டியில் விவரிக்கப்பட்டுள்ள குறிப்பிட்ட பணிகளை முடிக்க " "தேவையான பிஐபி பகுதிகளை மட்டுமே விவரிக்கிறது." -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "பார்வையாளர்கள்" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "இந்த வழிகாட்டியின் பார்வையாளர்கள் பைத்தானை தொகுப்புகளுடன் பயன்படுத்தும் எவரும்." -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " @@ -370,7 +370,7 @@ msgstr "" "அகவை, பாலினம், கல்வி, பண்பாடு மற்றும் பலவற்றைப் பகிர்ந்து கொள்ளக்கூடாது, ஆனால் அவர்கள் " "உங்களைப் போலவே பேக்கேசிங் பற்றி அறிய தகுதியுடையவர்கள்." -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " @@ -380,11 +380,11 @@ msgstr "" "நினைவில் கொள்ளுங்கள். இந்த வழிகாட்டியின் பார்வையாளர்களில் வானியலாளர்கள் அல்லது ஓவியர்கள் " "அல்லது மாணவர்கள் மற்றும் தொழில்முறை மென்பொருள் உருவாக்குநர்கள் உள்ளனர்." -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "குரல் மற்றும் தொனி" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." @@ -392,7 +392,7 @@ msgstr "" "இந்த வழிகாட்டியை எழுதும் போது, உங்களிடம் எல்லா பதில்களும் இருந்தாலும், அணுகக்கூடிய " "மற்றும் தாழ்மையான குரலுடன் எழுத முயற்சி செய்யுங்கள்." -#: ../source/contribute.rst:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -405,7 +405,7 @@ msgstr "" "கேள்வியைக் கேட்டிருக்கிறார், உங்களுக்கு பதில் தெரியும். நீங்கள் எவ்வாறு பதிலளிப்பீர்கள்? * " "அதுதான்* இந்த வழிகாட்டியை நீங்கள் எவ்வாறு எழுத வேண்டும்." -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -421,7 +421,7 @@ msgstr "" "ஒரு வாக்கியத்தை ஒரு முன்மொழிவில் முடிக்க உங்களுக்கு இதன்மூலம் இசைவு வழங்கப்படுகிறது, " "அதுதான் நீங்கள் அதை முடிக்க விரும்பினால்." -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -433,15 +433,15 @@ msgstr "" "உருவாக்குவது சரி, ஆனால் நீங்கள் ஒரு முக்கியமான பாதுகாப்பு பரிந்துரையை " "உள்ளடக்கியிருந்தால், நீங்கள் நகைச்சுவைகளை முழுவதுமாக தவிர்க்க விரும்பலாம்." -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "மாநாடுகள் மற்றும் இயக்கவியல்" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "** வாசகருக்கு எழுதுங்கள் **" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -461,11 +461,11 @@ msgstr "வலது: இயங்குவதன் மூலம் அதை msgid "Right: To install it, run…" msgstr "வலது: அதை நிறுவ, இயக்க…" -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "** மாநில அனுமானங்கள் **" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -476,11 +476,11 @@ msgstr "" "பக்கமும் வாசகர் பார்க்கும் வழிகாட்டியின் முதல் பக்கமாக இருக்கலாம். நீங்கள் அனுமானங்களைச் " "செய்யப் போகிறீர்கள் என்றால், நீங்கள் என்ன செய்யப் போகிறீர்கள் என்று சொல்லுங்கள்." -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "** குறுக்கு-குறிப்பு தாராளமாக **" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " @@ -490,11 +490,11 @@ msgstr "" "வழிகாட்டியின் ஒரு பகுதியுடன் இணைக்கவும் அல்லது வேறு இடங்களில் தொடர்புடைய ஆவணத்துடன் " "இணைக்கவும். வாசகரை ஒரு தேடலைச் சேமிக்கவும்." -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "** பெயரிடும் நடைமுறைகளை மதிக்கவும் **" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -518,11 +518,11 @@ msgstr "தவறு:… கிட்அப்பில் புரவலன் msgid "Right: …hosted on GitHub." msgstr "வலது:… கிட்அப்பில் புரவலன் செய்யப்பட்டது." -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "** பாலின-நடுநிலை பாணியைப் பயன்படுத்தவும் **" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -544,11 +544,11 @@ msgstr "வலது: ஒரு பராமரிப்பாளர் கோ msgid "Right: A maintainer uploads the file. Then the maintainer…" msgstr "வலது: ஒரு பராமரிப்பாளர் கோப்பை பதிவேற்றுகிறார். பின்னர் பராமரிப்பாளர்…" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "** தலைப்புகள் **" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -560,7 +560,7 @@ msgstr "" "தெரிந்து கொள்ள விரும்பலாம் *மைலிபரியை எவ்வாறு நிறுவுவது? *எனவே ஒரு நல்ல தலைப்பு " "*மைலிபரியை நிறுவலாம் *." -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -576,11 +576,11 @@ msgstr "தவறு: பைத்தானைப் பற்றி நீங msgid "Right: Things you should know about Python" msgstr "உரிமை: பைத்தானைப் பற்றி நீங்கள் தெரிந்து கொள்ள வேண்டிய விசயங்கள்" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "** எண்கள் **" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -3101,7 +3101,7 @@ msgstr "" "__. பை` கோப்பு:" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 msgid "Versioning" msgstr "பதிப்பு" @@ -4926,7 +4926,7 @@ msgstr "விவரம்" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "எடுத்துக்காட்டுகள்" @@ -10932,11 +10932,17 @@ msgstr "" "கணக்கைப் போலவே இல்லை." #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 +#, fuzzy +#| msgid "" +#| "For security reasons, you must require `manual approval `_ on each run " +#| "for the ``pypi`` environment." msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" "பாதுகாப்பு காரணங்களுக்காக, உங்களுக்கு `கையேடு ஒப்புதல் தேவை `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "`` உரிமம்``" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 #, fuzzy #| msgid "" #| "This is a valid :term:`SPDX license expression ` " @@ -12897,7 +12913,7 @@ msgstr "" "முழு உரிம பட்டியல் `SPDX உரிம பட்டியல் பக்கத்தில் ` _ இல் " "கிடைக்கிறது. ஆதரிக்கப்பட்ட பட்டியல் பதிப்பு 3.17 அல்லது பின்னர் இணக்கமான ஒன்றாகும்." -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " @@ -12915,7 +12931,7 @@ msgstr "" "உரிமத்தைப் பயன்படுத்துவது நல்லது, ஏனெனில் சில நிறுவனங்கள் உரிமம் அங்கீகரிக்கப்படாத " "மென்பொருளைத் தவிர்ப்பதால்." -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -12928,13 +12944,13 @@ msgstr "" "``. தனிப்பயன் அடையாளங்காட்டிகள் SPDX விவரக்குறிப்பைப் பின்பற்ற வேண்டும், `பிரிவு 10.1 " " _ _ _ _ _ _ அல்லது பின்னர் இணக்கமான ஏதேனும் ஒன்று." -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "`` உரிம-கோப்புகள்``" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 msgid "" "This is a list of license files and files containing other legal information " "you want to distribute with your package." @@ -12942,11 +12958,11 @@ msgstr "" "இது உங்கள் தொகுப்புடன் விநியோகிக்க விரும்பும் பிற சட்டத் தகவல்களைக் கொண்ட உரிமக் கோப்புகள் " "மற்றும் கோப்புகளின் பட்டியல்." -#: ../source/guides/writing-pyproject-toml.rst:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "குளோப் வடிவங்கள் விவரக்குறிப்பைப் பின்பற்ற வேண்டும்:" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." @@ -12954,7 +12970,7 @@ msgstr "" "எண்ணெழுத்து எழுத்துக்கள், அடிக்கோடிட்டு (`` _``), ஐபன்கள் (`` -``) மற்றும் புள்ளிகள் (`` ." "``) ஆகியவை சொற்களஞ்சியத்துடன் பொருந்தும்." -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." @@ -12962,11 +12978,11 @@ msgstr "" "சிறப்பு எழுத்துக்கள்: ``*``, ``? ``, `` ** `` மற்றும் எழுத்து வரம்புகள்: [] " "ஆதரிக்கப்படுகின்றன." -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "பாதை டிலிமிட்டர்கள் முன்னோக்கி ச்லாச் எழுத்துக்குறியாக இருக்க வேண்டும் (``/``)." -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 msgid "" "Patterns are relative to the directory containing :file:`pyproject.toml`, " "and thus may not start with a slash character." @@ -12974,15 +12990,15 @@ msgstr "" "வடிவங்கள் கொண்ட கோப்பகத்துடன் தொடர்புடையவை: கோப்பு: `pyproject.toml`, இதனால் ஒரு ச்லாச் " "பாத்திரத்துடன் தொடங்கக்கூடாது." -#: ../source/guides/writing-pyproject-toml.rst:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "பெற்றோர் அடைவு குறிகாட்டிகள் (`` ..``) பயன்படுத்தப்படக்கூடாது." -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "ஒவ்வொரு குளோபும் குறைந்தது ஒரு கோப்பை பொருத்த வேண்டும்." -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 msgid "" "Literal paths are valid globs. Any characters or character sequences not " "covered by this specification are invalid." @@ -12990,13 +13006,13 @@ msgstr "" "நேரடி பாதைகள் செல்லுபடியாகும் குளோப்கள். இந்த விவரக்குறிப்பால் மூடப்படாத எந்த எழுத்துக்கள் " "அல்லது எழுத்துக்குறி காட்சிகளும் தவறானவை." -#: ../source/guides/writing-pyproject-toml.rst:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "`` முக்கிய வார்த்தைகள்``" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 msgid "" "This will help PyPI's search box to suggest your project when people search " "for these keywords." @@ -13004,13 +13020,13 @@ msgstr "" "இந்த முக்கிய வார்த்தைகளை மக்கள் தேடும்போது உங்கள் திட்டத்தை பரிந்துரைக்க இது பைபியின் தேடல் " "பெட்டியை உதவும்." -#: ../source/guides/writing-pyproject-toml.rst:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "`` வகைப்படுத்திகள்``" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -13018,7 +13034,7 @@ msgstr "" "உங்கள் திட்டத்திற்கு பொருந்தும் PYPI வகைப்படுத்திகளின் பட்டியல். `சாத்தியக்கூறுகளின் முழு " "பட்டியலையும் சரிபார்க்கவும் <வகைப்படுத்தி-பட்டியல்_>` _." -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -13032,7 +13048,7 @@ msgstr "" "நிறுவக்கூடிய பைதான் பதிப்புகளை உண்மையில் கட்டுப்படுத்த, பயன்படுத்தவும்: ref: `-பைதான் " "தேவை." -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 msgid "" "To prevent a package from being uploaded to PyPI, use the special " "``Private :: Do Not Upload`` classifier. PyPI will always reject packages " @@ -13042,13 +13058,13 @@ msgstr "" "வேண்டாம்`` வகைப்படுத்தியைப் பயன்படுத்தவும். `` தனிப்பட்ட :: `` உடன் தொடங்கி " "வகைப்படுத்திகளுடன் தொகுப்புகளை PYPI எப்போதும் நிராகரிக்கும்." -#: ../source/guides/writing-pyproject-toml.rst:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "`` urls``" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 msgid "" "A list of URLs associated with your project, displayed on the left sidebar " "of your PyPI project page." @@ -13056,7 +13072,7 @@ msgstr "" "உங்கள் திட்டத்துடன் தொடர்புடைய முகவரி களின் பட்டியல், உங்கள் PYPI திட்ட பக்கத்தின் இடது " "பக்கப்பட்டியில் காட்டப்படும்." -#: ../source/guides/writing-pyproject-toml.rst:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -13068,7 +13084,7 @@ msgstr "" " `_ PYPI- குறிப்பிட்ட " "முகவரி செயலாக்கத்திற்கு." -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 msgid "" "Note that if the label contains spaces, it needs to be quoted, e.g., " "``Website = \"https://example.com\"`` but ``\"Official Website\" = \"https://" @@ -13077,7 +13093,7 @@ msgstr "" "லேபிளில் இடைவெளிகள் இருந்தால், அதை மேற்கோள் காட்ட வேண்டும், எ.கா., `` வலைத்தளம் = " "\"https://example.com\" ." -#: ../source/guides/writing-pyproject-toml.rst:469 +#: ../source/guides/writing-pyproject-toml.rst:471 msgid "" "Users are advised to use :ref:`well-known-labels` for their project URLs " "where appropriate, since consumers of metadata (like package indices) can " @@ -13087,7 +13103,7 @@ msgstr "" "முகவரி களுக்கு பொருத்தமான இடங்களில், மெட்டாடேட்டாவின் நுகர்வோர் (தொகுப்பு குறியீடுகள் " "போன்றவை) தங்கள் விளக்கக்காட்சியை நிபுணத்துவம் பெற முடியும்." -#: ../source/guides/writing-pyproject-toml.rst:473 +#: ../source/guides/writing-pyproject-toml.rst:475 msgid "" "For example in the following metadata, neither ``MyHomepage`` nor " "``\"Download Link\"`` is a well-known label, so they will be rendered " @@ -13096,7 +13112,7 @@ msgstr "" "எடுத்துக்காட்டாக, பின்வரும் மெட்டாடேட்டாவில், `` MyHomePage`` அல்லது `` \"பதிவிறக்கம் " "இணைப்பு\" `` என்பது ஒரு நன்கு அறியப்பட்ட சிட்டை, எனவே அவை சொற்களஞ்சியமாக வழங்கப்படும்:" -#: ../source/guides/writing-pyproject-toml.rst:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -13108,11 +13124,11 @@ msgstr "" "சொற்பொருளை மனதில் கொண்டு வழங்கலாம் (திட்டத்தின் முகப்புப் பக்கம் மற்றும் அதன் வெளிப்புற " "பதிவிறக்க இடம் முறையே)." -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "மேம்பட்ட செருகுநிரல்கள்" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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 " @@ -13122,15 +13138,15 @@ msgstr "" "மற்றும் பைக்மென்ட்ச்_ ஆகியவை அடங்கும். அத்தகைய சொருகி உருவாக்க, நீங்கள் அதை `` [Project." "entry- புள்ளிகள்] `` இதைப் போன்ற ஒரு துணைப்பிரிவில் அறிவிக்க வேண்டும்:" -#: ../source/guides/writing-pyproject-toml.rst:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "பார்க்க: ref: `சொருகி வழிகாட்டி <சொருகி-நுழைவு புள்ளிகள்>` மேலும் தகவலுக்கு." -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "ஒரு முழு சான்று" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 msgid "" "Think twice before applying an upper bound like ``requires-python = \"<= " "3.10\"`` here. `This blog post `_ contains some " @@ -13139,7 +13155,7 @@ msgstr "" "``-பைதான் = \"<= 3.10\" `` இங்கே. `இந்த வலைப்பதிவு இடுகையில் <-பைதான்-பிளாக்-" "போச்ட்_>` _ சாத்தியமான சிக்கல்கள் தொடர்பான சில தகவல்களைக் கொண்டுள்ளது." -#: ../source/guides/writing-pyproject-toml.rst:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -17536,7 +17552,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -17546,7 +17562,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -17651,9 +17667,11 @@ msgstr "`` சேஞ்ச்லாக்``" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "விவரக்குறிப்பு" @@ -21176,23 +21194,23 @@ msgstr "" "`` Adrent_url.json`` இன் உள்ளடக்கங்களை சரிபார்க்க பின்வரும் சாதொபொகு திட்டத்தைப் " "பயன்படுத்தலாம்:" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "மூல காப்பகம்:" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "குறிச்சொல் மற்றும் கமிட்-ஆச் உடன் git url:" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "உள்ளக அடைவு:" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "திருத்தக்கூடிய பயன்முறையில் உள்ளக அடைவு:" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." @@ -21200,7 +21218,7 @@ msgstr "" "மார்ச் 2020: இந்த விவரக்குறிப்பு மூலம் அங்கீகரிக்கப்பட்டது: PEP: `610`,` `` direct_url." "json`` மேனிலை தரவு கோப்பை வரையறுக்கிறது." -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -22365,6 +22383,189 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "சூன் 2022: இந்த விவரக்குறிப்பு மூலம் அங்கீகரிக்கப்பட்டது: PEP: `668`." +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +#, fuzzy +#| msgid "This specification was originally defined in :pep:`753`." +msgid "This specification was originally defined in :pep:`592`." +msgstr "இந்த விவரக்குறிப்பு முதலில் வரையறுக்கப்பட்டது: PEP: `753`." + +#: ../source/specifications/file-yanking.rst:14 +#, fuzzy +#| msgid "" +#| ":pep:`740` includes changes to the HTML and JSON index APIs. These " +#| "changes are documented in the :ref:`simple-repository-api` under :ref:" +#| "`simple-repository-api-base` and :ref:`json-serialization`." +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" +": PEP: `740` உஉகுமொ மற்றும் சாதொபொகு குறியெண் பநிஇ களில் மாற்றங்களை உள்ளடக்கியது. " +"இந்த மாற்றங்கள்: ref: `Simple-reposition-api` இன் கீழ் ஆவணப்படுத்தப்பட்டுள்ளன: ref:` " +"எளிய-ரோபோசிட்டரி-ஆபி-பேச்` மற்றும்: குறிப்பு: `json-cerialization`." + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" +"எளிய களஞ்சியத்தில் உள்ள இணைப்புகள் ** ** ஒரு `` தரவு-யாங்கட்`` பண்புக்கூறு இருக்கலாம், " +"இது எந்த மதிப்பும் இல்லாதிருக்கலாம், அல்லது ஒரு தன்னிச்சையான சரம் மதிப்பாக இருக்கலாம். " +"ஒரு `` தரவு-யங்க்` பண்புக்கூறு ** இருப்பு ** இந்த குறிப்பிட்ட இணைப்பால் சுட்டிக்காட்டப்பட்ட " +"கோப்பு \"அசைக்கப்பட்டது\" என்பதைக் குறிக்கிறது, மேலும் குறிப்பிட்ட காட்சிகளின் கீழ் தவிர, " +"ஒரு நிறுவியால் பொதுவாக தேர்ந்தெடுக்கப்படக்கூடாது ." + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" +"`` டேட்டா-யாங்கட்`` பண்புக்கூறின் மதிப்பு, இருந்தால், ஒரு தன்னிச்சையான சரம், இது கோப்பு " +"ஏன் அசைக்கப்பட்டது என்பதற்கான காரணத்தைக் குறிக்கிறது. எளிய களஞ்சிய பநிஇ ** செயலாக்கும் " +"கருவிகள் ** இந்த சரத்தை இறுதி பயனர்களுக்கு மேற்பரப்பு செய்யலாம்." + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" +"யங்க் செய்யப்பட்ட பண்புக்கூறு மாறாதவுடன் மாறாதது அல்ல, எதிர்காலத்தில் ரத்து செய்யப்படலாம் " +"(மற்றும் ரத்து செய்யப்பட்டவுடன், மீட்டமைக்கப்படலாம்). இவ்வாறு பநிஇ பயனர்கள் ** ** ஒரு " +"அழிக்கப்பட்ட கோப்பை \"ஒழுங்கற்ற\" (மற்றும் மீண்டும் அசைக்கக் கூட) சமாளிக்க முடியும்." + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "நிறுவிகள்" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" +"பயனர்களுக்கு விரும்பத்தக்க பட்டறிவு என்னவென்றால், ஒரு கோப்பை அசைத்தவுடன், ஒரு மனிதர் " +"தற்போது ஒரு கோப்பை நேரடியாக நிறுவ முயற்சிக்கும்போது, அந்தக் கோப்பு நீக்கப்பட்டதைப் போல " +"தோல்வியடைகிறது. இருப்பினும், ஒரு மனிதர் சிறிது நேரத்திற்கு முன்பு அதைச் செய்தபோது, " +"இப்போது ஒரு கணினி இப்போது அசைக்கப்பட்ட கோப்பை நிறுவ அசல் வரிசையை இயந்திரத்தனமாக " +"பின்பற்றி வருகிறது, பின்னர் அது அசைக்கப்படாதது போல் செயல்படுகிறது." + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" +"ஒரு நிறுவி ** ** யங்க் வெளியீடுகளை புறக்கணிக்க வேண்டும், தேர்வு தடைகளை யாங்க்ட் " +"செய்யப்படாத பதிப்பில் நிறைவு அடைய முடியும் என்றால், ** மே ** ஒரு கோரிக்கையை " +"திருப்திப்படுத்த முடியாது என்று பொருள் இருந்தாலும் கூட ஒரு வெளியீட்டைப் பயன்படுத்த " +"மறுக்கலாம். ஒரு செயல்படுத்தல் ** ** மேலே உள்ள நோக்கத்தின் ஆவியைப் பின்பற்றும் ஒரு " +"கொள்கையைத் தேர்வு செய்ய வேண்டும், மேலும் இது வெளியீடுகள்/கோப்புகளை \"புதிய\" சார்புகளைத் " +"தடுக்கிறது." + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" +"இதன் பொருள் என்னவென்றால், குறிப்பிட்ட நிறுவி வரை, அவற்றின் நிறுவியின் ஒட்டுமொத்த " +"பயன்பாட்டிற்கு எவ்வாறு சிறப்பாக பொருந்துவது என்பதை தீர்மானிக்க. இருப்பினும், எடுக்க இரண்டு " +"பரிந்துரைக்கப்பட்ட அணுகுமுறைகள் உள்ளன:" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" +"`` == `` (``.*``) அல்லது `` === `` போன்ற ஒரு வரம்பை உருவாக்கும் எந்த மாற்றிகளும் " +"இல்லாமல், சரியான பதிப்பிற்கு \"ஊசிகளை\" பொருத்தும் ஒரே கோப்பாக இல்லாவிட்டால், அவை " +"எப்போதும் புறக்கணிக்கப்படுகின்றன. இந்த பதிப்பு விவரக்குறிப்பைப் பொருத்துவது இல்லையெனில் " +"செய்யப்பட வேண்டும்: குறிப்பு: `பதிப்பு விவரக்குறிப்புகள் விவரக்குறிப்பு <பதிப்பு-" +"விவரக்குறிப்புகள்>` உள்ளக பதிப்புகள், சுழிய திணிப்பு போன்றவற்றுக்கு." + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" +"ஒரு பூட்டுக் கோப்பு (`` pipfile.lock`` அல்லது `` Poetic.lock`` போன்றவை) நிறுவப்பட " +"வேண்டியதைக் குறிப்பிடும் ஒரே கோப்பாக இல்லாவிட்டால், அவை எப்போதும் புறக்கணிக்கப்படும். இந்த " +"வழக்கில், சில உள்ளீட்டு கோப்பு அல்லது கட்டளையிலிருந்து பூட்டு கோப்பை உருவாக்கும்போது " +"அல்லது புதுப்பிக்கும்போது ** ** பயன்படுத்தப்படக்கூடாது." + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" +"யங்க் செய்யப்பட்ட கோப்புகளை எப்போது நிறுவ வேண்டும் என்பதை தீர்மானிக்க ஒரு நிறுவி தேர்வு " +"செய்யும் குறிப்பிட்ட மூலோபாயத்தைப் பொருட்படுத்தாமல், ஒரு நிறுவி ** ** ஒரு எச்சரிக்கையை " +"நிறுவ முடிவு செய்யும் போது எச்சரிக்கையை வெளியிட வேண்டும். அந்த எச்சரிக்கை ** ** அந்தக் " +"கோப்பு ஏன் அசைக்கப்பட்டது என்பது குறித்து பயனருக்கு இன்னும் குறிப்பிட்ட கருத்துக்களை வழங்க " +"`` தரவு-யாங்கட்`` பண்புக்கூறின் (அதற்கு மதிப்பு இருந்தால்) மதிப்பைப் பயன்படுத்தலாம்." + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "கண்ணாடிகள்" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "கண்ணாடிகள் பொதுவாக இரண்டு வழிகளில் ஒன்றான கோப்புகளை நடத்தலாம்:" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" +"அவர்கள் தங்கள் எளிய களஞ்சிய பநிஇ இருந்து முற்றிலும் தவிர்க்க தேர்வு செய்யலாம், இது " +"\"செயலில்\", இணைக்கப்படாத கோப்புகளை மட்டுமே காட்டும் களஞ்சியத்தின் மீது ஒரு பார்வையை " +"வழங்குகிறது." + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" +"அவர்கள் யங்க் செய்யப்பட்ட கோப்புகளைச் சேர்க்க தேர்வு செய்யலாம், மேலும் கூடுதலாக `` தரவு-" +"யாங்கட்`` பண்புகளையும் பிரதிபலிக்கலாம்." + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" +"கண்ணாடிகள் ** ** அதற்கான `` டேட்டா-யாங்கட்`` பண்புக்கூறையும் பிரதிபலிக்காமல் ஒரு அழிந்த " +"கோப்பை பிரதிபலிக்கக்கூடாது." + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -23124,7 +23325,7 @@ msgstr "" "எடுத்துக்காட்டு." #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "பரிந்துரைகள்" @@ -24028,13 +24229,21 @@ msgid "Compressed Tag Sets" msgstr "சுருக்கப்பட்ட குறிச்சொல் தொகுப்புகள்" #: ../source/specifications/platform-compatibility-tags.rst:352 +#, fuzzy +#| msgid "" +#| "To allow for compact filenames of bdists that work with more than one " +#| "compatibility tag triple, each tag in a filename can instead be a '.'-" +#| "separated, sorted, set of tags. For example, pip, a pure-Python package " +#| "that is written to run under Python 2 and 3 with the same source code, " +#| "could distribute a bdist with the tag ``py2.py3-none-any``. The full list " +#| "of simple tags is::" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" "ஒன்றுக்கு மேற்பட்ட பொருந்தக்கூடிய குறிச்சொல்லுடன் பணிபுரியும் BDISTS இன் சிறிய கோப்பு " "பெயர்களை அனுமதிக்க, ஒரு கோப்பு பெயரில் உள்ள ஒவ்வொரு குறிச்சொல்லும் அதற்கு பதிலாக '.'- " @@ -24254,6 +24463,158 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +#| msgid "Project Summaries" +msgid "Project Status Markers" +msgstr "திட்ட சுருக்கங்கள்" + +#: ../source/specifications/project-status-markers.rst:9 +#, fuzzy +#| msgid "This specification was originally defined in :pep:`740`." +msgid "This specification was originally defined in :pep:`792`." +msgstr "இந்த விவரக்குறிப்பு முதலில் வரையறுக்கப்பட்டது: PEP: `740`." + +#: ../source/specifications/project-status-markers.rst:14 +#, fuzzy +#| msgid "" +#| ":pep:`740` includes changes to the HTML and JSON index APIs. These " +#| "changes are documented in the :ref:`simple-repository-api` under :ref:" +#| "`simple-repository-api-base` and :ref:`json-serialization`." +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" +": PEP: `740` உஉகுமொ மற்றும் சாதொபொகு குறியெண் பநிஇ களில் மாற்றங்களை உள்ளடக்கியது. " +"இந்த மாற்றங்கள்: ref: `Simple-reposition-api` இன் கீழ் ஆவணப்படுத்தப்பட்டுள்ளன: ref:` " +"எளிய-ரோபோசிட்டரி-ஆபி-பேச்` மற்றும்: குறிப்பு: `json-cerialization`." + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +#| msgid "Installation" +msgid "Installer semantics: none." +msgstr "நிறுவல்" + +#: ../source/specifications/project-status-markers.rst:45 +#, fuzzy +#| msgid "``packages``" +msgid "``archived``" +msgstr "`` தொகுப்புகள்``" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +#| msgid "Installers" +msgid "Installer semantics:" +msgstr "நிறுவிகள்" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +#, fuzzy +#| msgid "Deprecated" +msgid "``deprecated``" +msgstr "மதிப்பிடப்பட்டது" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "``pyproject.toml`` specification" @@ -24521,6 +24882,7 @@ msgid "``dependency-groups``" msgstr "`` [சார்பு-குழுக்கள்] `` அட்டவணை" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" @@ -25364,8 +25726,10 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" -msgstr "" +#, fuzzy +#| msgid ":ref:`pyproject-toml-spec`" +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr ": ref: `pyproject-toml-spec`" #: ../source/specifications/pylock-toml.rst:676 msgid "" @@ -25379,7 +25743,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -25396,16 +25760,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:701 -#, fuzzy -#| msgid ":ref:`pyproject-toml-spec`" -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr ": ref: `pyproject-toml-spec`" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -27228,6 +27586,26 @@ msgid "" msgstr "" "செப்டம்பர் 2020: பல்வேறு திருத்தங்கள் மற்றும் விளக்கங்கள் மூலம் அங்கீகரிக்கப்பட்டன: PEP: `627`." +#: ../source/specifications/schemas/index.rst:4 +#, fuzzy +#| msgid "Data schema" +msgid "PyPA schemas" +msgstr "தரவுத் திட்டம்" + +#: ../source/specifications/schemas/index.rst:6 +#, fuzzy +#| msgid "``direct_url.json``: see :ref:`direct-url` for details" +msgid "`direct_url.json `_" +msgstr "`` stread_url.json``: காண்க: குறிப்பு: விவரங்களுக்கு `நேரடி-உர்எல்`" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "தொகுப்பு விநியோக கோப்பு வடிவங்கள்" @@ -27269,20 +27647,33 @@ msgid "" msgstr "" #: ../source/specifications/simple-repository-api.rst:13 +#, fuzzy +#| msgid "" +#| "The interface for querying available package versions and retrieving " +#| "packages from an index server comes in two forms: HTML and JSON." msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" "கிடைக்கக்கூடிய தொகுப்பு பதிப்புகளை வினவுவதற்கும், குறியீட்டு சேவையகத்திலிருந்து " "தொகுப்புகளை மீட்டெடுப்பதற்கும் இடைமுகம் இரண்டு வடிவங்களில் வருகிறது: உஉகுமொ மற்றும் சேசன்." -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +#, fuzzy +#| msgid "Base HTML API" +msgid "Base API" msgstr "அடிப்படை உஉகுமொ பநிஇ" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 +#, fuzzy +#| msgid "" +#| "A repository that implements the simple API is defined by its base URL, " +#| "this is the top level URL that all additional URLs are below. The API is " +#| "named the \"simple\" repository due to the fact that PyPI's base URL is " +#| "``https://pypi.org/simple/``." msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." @@ -27292,7 +27683,7 @@ msgstr "" "pypi.org/simple/`` என்ற காரணத்தினால் பநிஇ க்கு \"எளிய\" களஞ்சியம் என்று " "பெயரிடப்பட்டுள்ளது." -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" @@ -27302,48 +27693,268 @@ msgstr "" "தொடர்புடையதாக இருக்கும் (எனவே பைபியின் முகவரி கொடுக்கப்பட்டால், ``/foo/`` முகவரி `` " "https: // pypi.org/simple/foo/`` ஆக இருக்கும்." -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" +msgstr "இயல்பாக்கப்பட்ட பெயர்கள்" + +#: ../source/specifications/simple-repository-api.rst:35 +msgid "" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" +msgstr "" +"இந்த விவரக்குறிப்பு \"இயல்பாக்கப்பட்ட\" திட்ட பெயரின் கருத்தை குறிக்கிறது. படி: ref: " +"`பெயர் இயல்பாக்குதல் விவரக்குறிப்பு <பெயர்-இயல்பாக்கம்>` ஒரு பெயரில் உள்ள ஒரே " +"செல்லுபடியாகும் எழுத்துக்கள் தபஅஇகு எழுத்துக்கள், தபஅஇகு எண்கள், `` .``, `` -``, மற்றும் " +"`` _``. ```,` `-``, அல்லது` `_`` ஒரு ஒற்றை` `-`` எழுத்துடன் மாற்றப்பட்ட எழுத்துக்களின் " +"அனைத்து ரன்களிலும் பெயர் குறைவாக இருக்க வேண்டும். இதை பைத்தானில் `` ரீ`` தொகுதி :: உடன் " +"செயல்படுத்தலாம்" + +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" +msgstr "பதிப்பு PYPI எளிய பநிஇ" + +#: ../source/specifications/simple-repository-api.rst:52 +msgid "" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" +msgstr "களஞ்சிய பதிப்பை விளக்கும் போது:" + +#: ../source/specifications/simple-repository-api.rst:68 +msgid "" +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." +msgstr "" +"முக்கிய பதிப்பை அதிகரிப்பது பின்னோக்கி பொருந்தாத மாற்றத்தை சமிக்ஞை செய்யப் பயன்படுகிறது, " +"அதாவது இருக்கும் வாடிக்கையாளர்கள் இனி பநிஇ ஐ அர்த்தமுள்ளதாக பயன்படுத்த முடியும் என்று " +"எதிர்பார்க்க முடியாது." + +#: ../source/specifications/simple-repository-api.rst:71 +msgid "" +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." +msgstr "" +"சிறிய பதிப்பை அதிகரிப்பது பின்னோக்கி இணக்கமான மாற்றத்தைக் குறிக்கப் பயன்படுகிறது, " +"அதாவது இருக்கும் வாடிக்கையாளர்கள் பநிஇ ஐ அர்த்தமுள்ளதாக பயன்படுத்த முடியும் என்று " +"எதிர்பார்க்கப்படுகிறது." + +#: ../source/specifications/simple-repository-api.rst:75 +msgid "" +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." +msgstr "" +"தற்போதுள்ள வாடிக்கையாளர்கள் பநிஇ ஐ \"அர்த்தமுள்ள வகையில்\" பயன்படுத்த முடியும் என்ற பரந்த " +"பரிந்துரைக்கு அப்பால் பின்னோக்கி பொருந்தாத Vs இணக்கமான மாற்றத்தை குறிப்பாக உருவாக்குவது " +"குறித்து எதிர்கால விவரக்குறிப்புகளின் விருப்பப்படி இது விடப்படுகிறது, மேலும் ஏற்கனவே " +"உள்ள அம்சங்களைச் சேர்ப்பது, மாற்றியமைப்பது அல்லது அகற்றுவது ஆகியவை அடங்கும்." + +#: ../source/specifications/simple-repository-api.rst:81 +msgid "" +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" +"முக்கிய பதிப்பு ஒருபோதும் அதிகரிக்கப்படாது என்பது இந்த விவரக்குறிப்பின் எதிர்பார்ப்பாகும், " +"மேலும் எதிர்கால பெரிய பநிஇ பரிணாமங்கள் பநிஇ படிமலர்ச்சி வளர்ச்சிக்கு வேறுபட்ட " +"வழிமுறையைப் பயன்படுத்தும். எவ்வாறாயினும், எதிர்கால பதிப்புகளுடன் (எ.கா.." + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:91 +msgid "" +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:96 +msgid "" +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:98 +msgid "" +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" +msgstr "வாடிக்கையாளர்கள்" + +#: ../source/specifications/simple-repository-api.rst:105 +msgid "" +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." +msgstr "" +"எளிய பநிஇ உடன் தொடர்பு கொள்ளும் வாடிக்கையாளர்கள் ** களஞ்சிய பதிப்பிற்கான ஒவ்வொரு " +"பதிலையும் ** உள்நோக்கிக் கொள்ள வேண்டும், மேலும் அந்த தரவு இல்லை என்றால் ** ** இது பதிப்பு " +"1.0 என்று கருத வேண்டும்." + +#: ../source/specifications/simple-repository-api.rst:109 +msgid "" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." +msgstr "" +"ஒரு முக்கிய பதிப்பை எதிர்பார்த்ததை விட அதிகமாக எதிர்கொள்ளும்போது, வாடிக்கையாளர்கள் ** " +"பயனருக்கு பொருத்தமான பிழை செய்தியுடன் ** கடினமாக இருக்க வேண்டும்." + +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." +msgstr "" +"ஒரு சிறிய பதிப்பை எதிர்பார்த்ததை விட அதிகமாக எதிர்கொள்ளும்போது, வாடிக்கையாளர்கள் ** ** " +"பொருத்தமான செய்தியுடன் பயனர்களை எச்சரிக்க வேண்டும்." + +#: ../source/specifications/simple-repository-api.rst:115 +msgid "" +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." +msgstr "" +"ஒரு களஞ்சியம் பயன்படுத்தும் எந்த இடங்களைக் கொண்டுள்ளது என்பதைத் தீர்மானிக்க வாடிக்கையாளர்கள் " +"** இருக்கலாம் ** அம்சக் கண்டறிதலைப் பயன்படுத்தலாம்." + +#: ../source/specifications/simple-repository-api.rst:121 +#, fuzzy +#| msgid "JSON Serialization" +msgid "HTML Serialization" +msgstr "சாதொபொகு சீரியலைசேசன்" + +#: ../source/specifications/simple-repository-api.rst:125 +#, fuzzy +#| msgid "" +#| "The following constraints apply to all JSON serialized responses " +#| "described in this spec:" +msgid "" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" +msgstr "" +"இந்த விவரக்குறிப்பில் விவரிக்கப்பட்டுள்ள அனைத்து சாதொபொகு தொடர் பதில்களுக்கும் பின்வரும் " +"தடைகள் பொருந்தும்:" + +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:129 +msgid "" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" +msgstr "திட்ட பட்டியல்" + +#: ../source/specifications/simple-repository-api.rst:135 msgid "" "Within a repository, the root URL (``/`` for this spec which represents the " "base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"project in the repository." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:139 +msgid "" +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" +msgstr "திட்ட விவரம்" + +#: ../source/specifications/simple-repository-api.rst:158 msgid "" "Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." -msgstr "" -"ரூட் முகவரி க்கு கீழே ஒரு களஞ்சியத்தில் உள்ள ஒவ்வொரு தனிப்பட்ட திட்டத்திற்கும் மற்றொரு " -"முகவரி உள்ளது. இந்த முகவரி இன் வடிவம் ``//`` ஆகும், அங்கு `` <திட்டம்> `` " -"அந்த திட்டத்திற்கான இயல்பாக்கப்பட்ட பெயரால் மாற்றப்படுகிறது, எனவே \"ஓலி கிரெயில்\" என்ற " -"திட்டத்திற்கு ``/ஓலிங்ரெயில்/`` போன்ற முகவரி இருக்கும். இந்த முகவரி திட்டத்திற்கான " -"கோப்புக்கு ஒற்றை நங்கூர உறுப்புடன் செல்லுபடியாகும் HTML5 பக்கத்துடன் பதிலளிக்க வேண்டும். " -"HREF பண்புக்கூறு ** பதிவிறக்கம் செய்வதற்கான கோப்பின் இருப்பிடத்துடன் இணைக்கும் முகவரி ஆக " -"இருக்க வேண்டும், மேலும் நங்கூரம் குறிச்சொல்லின் உரை ** ** முகவரி இன் இறுதி பாதை " -"கூறுகளை (கோப்பு பெயர்) பொருத்த வேண்டும். முகவரி ** ** பின்வரும் தொடரியல் கொண்ட ஒரு " -"முகவரி துண்டு வடிவத்தில் ஒரு ஆசை சேர்க்க வேண்டும்: ``# = ``, " -"அங்கு `` `` என்பது ஆச் செயல்பாட்டின் சிறிய பெயர் (`` சா 256` `` `` `` `` " -"`` `` `` `` `." +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." +msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:164 +msgid "" +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:167 +msgid "" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:172 +#, fuzzy +#| msgid "" +#| "The repository **SHOULD** provide the hash of the Core Metadata file as " +#| "the ``data-dist-info-metadata`` attribute's value using the syntax " +#| "``=``, where ```` is the lower cased name " +#| "of the hash function used, and ```` is the hex encoded digest. " +#| "The repository **MAY** use ``true`` as the attribute's value if a hash is " +#| "unavailable." +msgid "" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." +msgstr "" +"களஞ்சியமான ** ** கோர் மேனிலை தரவு கோப்பின் ஆசை `` = `` " +"என்ற தொடரியல் பயன்படுத்தி `` = , அங்கு `` `` `` `` " +"` have to be HTML encoded as ``<`` and " "``>``, respectively." @@ -27472,64 +28083,26 @@ msgstr "" "பண்புக்கூறு மதிப்பில், <மற்றும்> உஉகுமொ முறையே `` & lt; `` மற்றும் `` & gt; `` என " "குறியிடப்பட வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:245 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -"ஒரு களஞ்சியம் ** ஒரு கோப்பு இணைப்பில் ஒரு `` தரவு-ஆதாரம்`` பண்புக்கூறு சேர்க்கப்படலாம். " -"இந்த பண்புக்கூறு ** ** ஒரு முழுமையான தகுதி வாய்ந்த முகவரி ஆக இருக்க வேண்டும், இது " -"கோப்பின் ஆதாரத்தை அந்த முகவரி இல் காணலாம் என்பதைக் குறிக்கிறது. இந்த முகவரி ** ** ஒரு " -"`பாதுகாப்பான தோற்றத்தை ` _ ஆகியவற்றைக் குறிக்க வேண்டும்." - -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:139 -msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." -msgstr "" -"இணைக்கப்பட்ட ஆதாரத்தின் வடிவம் இதில் வரையறுக்கப்பட்டுள்ளது: குறிப்பு: `குறியீட்டு-ஓச்ட்-" -"அட்டெச்டெச்டேசன்ச்`." - -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" -msgstr "இயல்பாக்கப்பட்ட பெயர்கள்" -#: ../source/specifications/simple-repository-api.rst:144 -msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" -msgstr "" -"இந்த விவரக்குறிப்பு \"இயல்பாக்கப்பட்ட\" திட்ட பெயரின் கருத்தை குறிக்கிறது. படி: ref: " -"`பெயர் இயல்பாக்குதல் விவரக்குறிப்பு <பெயர்-இயல்பாக்கம்>` ஒரு பெயரில் உள்ள ஒரே " -"செல்லுபடியாகும் எழுத்துக்கள் தபஅஇகு எழுத்துக்கள், தபஅஇகு எண்கள், `` .``, `` -``, மற்றும் " -"`` _``. ```,` `-``, அல்லது` `_`` ஒரு ஒற்றை` `-`` எழுத்துடன் மாற்றப்பட்ட எழுத்துக்களின் " -"அனைத்து ரன்களிலும் பெயர் குறைவாக இருக்க வேண்டும். இதை பைத்தானில் `` ரீ`` தொகுதி :: உடன் " -"செயல்படுத்தலாம்" - -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" -msgstr "எளிய பநிஇ க்கு \"யாங்க்\" ஆதரவைச் சேர்ப்பது" - -#: ../source/specifications/simple-repository-api.rst:161 -msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +#: ../source/specifications/simple-repository-api.rst:247 +#, fuzzy +#| msgid "" +#| "Links in the simple repository **MAY** have a ``data-yanked`` attribute " +#| "which may have no value, or may have an arbitrary string as a value. The " +#| "presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +#| "indicating that the file pointed to by this particular link has been " +#| "\"Yanked\", and should not generally be selected by an installer, except " +#| "under specific scenarios." +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" "எளிய களஞ்சியத்தில் உள்ள இணைப்புகள் ** ** ஒரு `` தரவு-யாங்கட்`` பண்புக்கூறு இருக்கலாம், " "இது எந்த மதிப்பும் இல்லாதிருக்கலாம், அல்லது ஒரு தன்னிச்சையான சரம் மதிப்பாக இருக்கலாம். " @@ -27537,291 +28110,85 @@ msgstr "" "கோப்பு \"அசைக்கப்பட்டது\" என்பதைக் குறிக்கிறது, மேலும் குறிப்பிட்ட காட்சிகளின் கீழ் தவிர, " "ஒரு நிறுவியால் பொதுவாக தேர்ந்தெடுக்கப்படக்கூடாது ." -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:253 +#, fuzzy +#| msgid "" +#| "The value of the ``data-yanked`` attribute, if present, is an arbitrary " +#| "string that represents the reason for why the file has been yanked. Tools " +#| "that process the simple repository API **MAY** surface this string to end " +#| "users." msgid "" "The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"string that represents the reason for why the file has been yanked." msgstr "" "`` டேட்டா-யாங்கட்`` பண்புக்கூறின் மதிப்பு, இருந்தால், ஒரு தன்னிச்சையான சரம், இது கோப்பு " "ஏன் அசைக்கப்பட்டது என்பதற்கான காரணத்தைக் குறிக்கிறது. எளிய களஞ்சிய பநிஇ ** செயலாக்கும் " "கருவிகள் ** இந்த சரத்தை இறுதி பயனர்களுக்கு மேற்பரப்பு செய்யலாம்." -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." -msgstr "" -"யங்க் செய்யப்பட்ட பண்புக்கூறு மாறாதவுடன் மாறாதது அல்ல, எதிர்காலத்தில் ரத்து செய்யப்படலாம் " -"(மற்றும் ரத்து செய்யப்பட்டவுடன், மீட்டமைக்கப்படலாம்). இவ்வாறு பநிஇ பயனர்கள் ** ** ஒரு " -"அழிக்கப்பட்ட கோப்பை \"ஒழுங்கற்ற\" (மற்றும் மீண்டும் அசைக்கக் கூட) சமாளிக்க முடியும்." - -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" -msgstr "நிறுவிகள்" - -#: ../source/specifications/simple-repository-api.rst:182 -msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." -msgstr "" -"பயனர்களுக்கு விரும்பத்தக்க பட்டறிவு என்னவென்றால், ஒரு கோப்பை அசைத்தவுடன், ஒரு மனிதர் " -"தற்போது ஒரு கோப்பை நேரடியாக நிறுவ முயற்சிக்கும்போது, அந்தக் கோப்பு நீக்கப்பட்டதைப் போல " -"தோல்வியடைகிறது. இருப்பினும், ஒரு மனிதர் சிறிது நேரத்திற்கு முன்பு அதைச் செய்தபோது, " -"இப்போது ஒரு கணினி இப்போது அசைக்கப்பட்ட கோப்பை நிறுவ அசல் வரிசையை இயந்திரத்தனமாக " -"பின்பற்றி வருகிறது, பின்னர் அது அசைக்கப்படாதது போல் செயல்படுகிறது." - -#: ../source/specifications/simple-repository-api.rst:189 -msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." -msgstr "" -"ஒரு நிறுவி ** ** யங்க் வெளியீடுகளை புறக்கணிக்க வேண்டும், தேர்வு தடைகளை யாங்க்ட் " -"செய்யப்படாத பதிப்பில் நிறைவு அடைய முடியும் என்றால், ** மே ** ஒரு கோரிக்கையை " -"திருப்திப்படுத்த முடியாது என்று பொருள் இருந்தாலும் கூட ஒரு வெளியீட்டைப் பயன்படுத்த " -"மறுக்கலாம். ஒரு செயல்படுத்தல் ** ** மேலே உள்ள நோக்கத்தின் ஆவியைப் பின்பற்றும் ஒரு " -"கொள்கையைத் தேர்வு செய்ய வேண்டும், மேலும் இது வெளியீடுகள்/கோப்புகளை \"புதிய\" சார்புகளைத் " -"தடுக்கிறது." - -#: ../source/specifications/simple-repository-api.rst:196 -msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" -msgstr "" -"இதன் பொருள் என்னவென்றால், குறிப்பிட்ட நிறுவி வரை, அவற்றின் நிறுவியின் ஒட்டுமொத்த " -"பயன்பாட்டிற்கு எவ்வாறு சிறப்பாக பொருந்துவது என்பதை தீர்மானிக்க. இருப்பினும், எடுக்க இரண்டு " -"பரிந்துரைக்கப்பட்ட அணுகுமுறைகள் உள்ளன:" - -#: ../source/specifications/simple-repository-api.rst:200 -msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." -msgstr "" -"`` == `` (``.*``) அல்லது `` === `` போன்ற ஒரு வரம்பை உருவாக்கும் எந்த மாற்றிகளும் " -"இல்லாமல், சரியான பதிப்பிற்கு \"ஊசிகளை\" பொருத்தும் ஒரே கோப்பாக இல்லாவிட்டால், அவை " -"எப்போதும் புறக்கணிக்கப்படுகின்றன. இந்த பதிப்பு விவரக்குறிப்பைப் பொருத்துவது இல்லையெனில் " -"செய்யப்பட வேண்டும்: குறிப்பு: `பதிப்பு விவரக்குறிப்புகள் விவரக்குறிப்பு <பதிப்பு-" -"விவரக்குறிப்புகள்>` உள்ளக பதிப்புகள், சுழிய திணிப்பு போன்றவற்றுக்கு." - -#: ../source/specifications/simple-repository-api.rst:207 -msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." -msgstr "" -"ஒரு பூட்டுக் கோப்பு (`` pipfile.lock`` அல்லது `` Poetic.lock`` போன்றவை) நிறுவப்பட " -"வேண்டியதைக் குறிப்பிடும் ஒரே கோப்பாக இல்லாவிட்டால், அவை எப்போதும் புறக்கணிக்கப்படும். இந்த " -"வழக்கில், சில உள்ளீட்டு கோப்பு அல்லது கட்டளையிலிருந்து பூட்டு கோப்பை உருவாக்கும்போது " -"அல்லது புதுப்பிக்கும்போது ** ** பயன்படுத்தப்படக்கூடாது." - -#: ../source/specifications/simple-repository-api.rst:213 -msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." -msgstr "" -"யங்க் செய்யப்பட்ட கோப்புகளை எப்போது நிறுவ வேண்டும் என்பதை தீர்மானிக்க ஒரு நிறுவி தேர்வு " -"செய்யும் குறிப்பிட்ட மூலோபாயத்தைப் பொருட்படுத்தாமல், ஒரு நிறுவி ** ** ஒரு எச்சரிக்கையை " -"நிறுவ முடிவு செய்யும் போது எச்சரிக்கையை வெளியிட வேண்டும். அந்த எச்சரிக்கை ** ** அந்தக் " -"கோப்பு ஏன் அசைக்கப்பட்டது என்பது குறித்து பயனருக்கு இன்னும் குறிப்பிட்ட கருத்துக்களை வழங்க " -"`` தரவு-யாங்கட்`` பண்புக்கூறின் (அதற்கு மதிப்பு இருந்தால்) மதிப்பைப் பயன்படுத்தலாம்." - -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" -msgstr "கண்ணாடிகள்" - -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" -msgstr "கண்ணாடிகள் பொதுவாக இரண்டு வழிகளில் ஒன்றான கோப்புகளை நடத்தலாம்:" - -#: ../source/specifications/simple-repository-api.rst:225 -msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." -msgstr "" -"அவர்கள் தங்கள் எளிய களஞ்சிய பநிஇ இருந்து முற்றிலும் தவிர்க்க தேர்வு செய்யலாம், இது " -"\"செயலில்\", இணைக்கப்படாத கோப்புகளை மட்டுமே காட்டும் களஞ்சியத்தின் மீது ஒரு பார்வையை " -"வழங்குகிறது." - -#: ../source/specifications/simple-repository-api.rst:228 -msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." -msgstr "" -"அவர்கள் யங்க் செய்யப்பட்ட கோப்புகளைச் சேர்க்க தேர்வு செய்யலாம், மேலும் கூடுதலாக `` தரவு-" -"யாங்கட்`` பண்புகளையும் பிரதிபலிக்கலாம்." - -#: ../source/specifications/simple-repository-api.rst:231 -msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." -msgstr "" -"கண்ணாடிகள் ** ** அதற்கான `` டேட்டா-யாங்கட்`` பண்புக்கூறையும் பிரதிபலிக்காமல் ஒரு அழிந்த " -"கோப்பை பிரதிபலிக்கக்கூடாது." - -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" -msgstr "பதிப்பு PYPI எளிய பநிஇ" - -#: ../source/specifications/simple-repository-api.rst:239 -msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" -msgstr "களஞ்சிய பதிப்பை விளக்கும் போது:" - -#: ../source/specifications/simple-repository-api.rst:255 -msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." -msgstr "" -"முக்கிய பதிப்பை அதிகரிப்பது பின்னோக்கி பொருந்தாத மாற்றத்தை சமிக்ஞை செய்யப் பயன்படுகிறது, " -"அதாவது இருக்கும் வாடிக்கையாளர்கள் இனி பநிஇ ஐ அர்த்தமுள்ளதாக பயன்படுத்த முடியும் என்று " -"எதிர்பார்க்க முடியாது." - #: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -"சிறிய பதிப்பை அதிகரிப்பது பின்னோக்கி இணக்கமான மாற்றத்தைக் குறிக்கப் பயன்படுகிறது, " -"அதாவது இருக்கும் வாடிக்கையாளர்கள் பநிஇ ஐ அர்த்தமுள்ளதாக பயன்படுத்த முடியும் என்று " -"எதிர்பார்க்கப்படுகிறது." -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -"தற்போதுள்ள வாடிக்கையாளர்கள் பநிஇ ஐ \"அர்த்தமுள்ள வகையில்\" பயன்படுத்த முடியும் என்ற பரந்த " -"பரிந்துரைக்கு அப்பால் பின்னோக்கி பொருந்தாத Vs இணக்கமான மாற்றத்தை குறிப்பாக உருவாக்குவது " -"குறித்து எதிர்கால விவரக்குறிப்புகளின் விருப்பப்படி இது விடப்படுகிறது, மேலும் ஏற்கனவே " -"உள்ள அம்சங்களைச் சேர்ப்பது, மாற்றியமைப்பது அல்லது அகற்றுவது ஆகியவை அடங்கும்." +"ஒரு களஞ்சியம் ** ஒரு கோப்பு இணைப்பில் ஒரு `` தரவு-ஆதாரம்`` பண்புக்கூறு சேர்க்கப்படலாம். " +"இந்த பண்புக்கூறு ** ** ஒரு முழுமையான தகுதி வாய்ந்த முகவரி ஆக இருக்க வேண்டும், இது " +"கோப்பின் ஆதாரத்தை அந்த முகவரி இல் காணலாம் என்பதைக் குறிக்கிறது. இந்த முகவரி ** ** ஒரு " +"`பாதுகாப்பான தோற்றத்தை ` _ ஆகியவற்றைக் குறிக்க வேண்டும்." #: ../source/specifications/simple-repository-api.rst:268 -msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." -msgstr "" -"முக்கிய பதிப்பு ஒருபோதும் அதிகரிக்கப்படாது என்பது இந்த விவரக்குறிப்பின் எதிர்பார்ப்பாகும், " -"மேலும் எதிர்கால பெரிய பநிஇ பரிணாமங்கள் பநிஇ படிமலர்ச்சி வளர்ச்சிக்கு வேறுபட்ட " -"வழிமுறையைப் பயன்படுத்தும். எவ்வாறாயினும், எதிர்கால பதிப்புகளுடன் (எ.கா.." - -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:278 -msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:283 -msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" +"இணைக்கப்பட்ட ஆதாரத்தின் வடிவம் இதில் வரையறுக்கப்பட்டுள்ளது: குறிப்பு: `குறியீட்டு-ஓச்ட்-" +"அட்டெச்டெச்டேசன்ச்`." -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" -msgstr "வாடிக்கையாளர்கள்" - -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -"எளிய பநிஇ உடன் தொடர்பு கொள்ளும் வாடிக்கையாளர்கள் ** களஞ்சிய பதிப்பிற்கான ஒவ்வொரு " -"பதிலையும் ** உள்நோக்கிக் கொள்ள வேண்டும், மேலும் அந்த தரவு இல்லை என்றால் ** ** இது பதிப்பு " -"1.0 என்று கருத வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -"ஒரு முக்கிய பதிப்பை எதிர்பார்த்ததை விட அதிகமாக எதிர்கொள்ளும்போது, வாடிக்கையாளர்கள் ** " -"பயனருக்கு பொருத்தமான பிழை செய்தியுடன் ** கடினமாக இருக்க வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -"ஒரு சிறிய பதிப்பை எதிர்பார்த்ததை விட அதிகமாக எதிர்கொள்ளும்போது, வாடிக்கையாளர்கள் ** ** " -"பொருத்தமான செய்தியுடன் பயனர்களை எச்சரிக்க வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -"ஒரு களஞ்சியம் பயன்படுத்தும் எந்த இடங்களைக் கொண்டுள்ளது என்பதைத் தீர்மானிக்க வாடிக்கையாளர்கள் " -"** இருக்கலாம் ** அம்சக் கண்டறிதலைப் பயன்படுத்தலாம்." -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "எளிய களஞ்சிய பநிஇ இல் விநியோக மெட்டாடேட்டாவை பரிமாறவும்" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -27835,7 +28202,7 @@ msgstr "" "விநியோகத்தைக் குறிக்கிறது ** ** ஒரு முக்கிய மேனிலை தரவு கோப்பைக் கொண்டிருக்க வேண்டும், " "இது வழங்கல் செயலாக்கப்படும்போது மற்றும்/அல்லது நிறுவப்படும்போது மாற்றப்படாது." -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -27855,7 +28222,7 @@ msgstr "" "விவரக்குறிப்பு <எளிய-ரெபோசிட்டரி-API-BASE>` சிபிசி கையொப்பக் கோப்பின் இருப்பிடத்தைக் " "குறிப்பிடுகிறது." -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -27869,11 +28236,11 @@ msgstr "" "`` format (``Major.Minor``), which has defined the " @@ -27944,7 +28311,7 @@ msgstr "" "வடிவமைப்பை விவரிக்கிறது, இந்த விவரக்குறிப்பு தற்போதுள்ள `` 1.0`` பதிப்பை மாற்றாது, " "அதற்கு பதிலாக அதை சாதொபொகு இல் எவ்வாறு வரிசைப்படுத்துவது என்பதை விவரிக்கிறது." -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -27956,7 +28323,7 @@ msgstr "" "அர்த்தமுள்ளதாக புரிந்துகொள்வார்கள் என்று எதிர்பார்க்க முடியாது என்றால் முக்கிய பதிப்பு எண் " "** ** அதிகரிக்கப்பட வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " @@ -27966,7 +28333,7 @@ msgstr "" "பதிப்பு ** ** அதிகரிக்கப்பட வேண்டும், ஆனால் தற்போதுள்ள வாடிக்கையாளர்கள் தொடர்ந்து " "வடிவமைப்பை அர்த்தமுள்ளதாக புரிந்துகொள்வார்கள் என்று எதிர்பார்க்கப்படுகிறது." -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " @@ -27976,7 +28343,7 @@ msgstr "" "மாற்றங்கள் மற்றும் சேர்க்கப்படும் அல்லது அகற்றப்படும் அம்சங்களைக் குறிக்காத மாற்றங்கள் பதிப்பு " "எண்ணை மாற்றாமல் ஏற்படலாம்." -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " @@ -27986,7 +28353,7 @@ msgstr "" "சிறந்தது என்று நம்புகிறது, இது ஏபிஐக்கு ஏதேனும் மாற்றங்களைச் செய்து, அந்த மாற்றம் பெரிய " "அல்லது சிறிய பதிப்பை அதிகரிக்க வேண்டுமா இல்லையா என்பதை தீர்மானிக்க வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -28000,7 +28367,7 @@ msgstr "" "ஒவ்வொரு வடிவமைப்பிலும் ஒரு நற்பொருத்தம் எவ்வாறு வரிசைப்படுத்துகிறது என்பதற்கான விவரங்கள், " "அந்த நற்பொருத்தம் உள்ளதா இல்லையா என்பது உட்பட." -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " @@ -28010,21 +28377,26 @@ msgstr "" "வேண்டும், அதன் விளக்கம் அந்த தரவின் பதிப்பால் வரையறுக்கப்படுகிறது, பின்னர் இலக்கு " "சீரியலைசேசன் வடிவத்தில் வரிசைப்படுத்தப்படுகிறது." -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "சாதொபொகு சீரியலைசேசன்" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 +#, fuzzy +#| msgid "" +#| "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " +#| "serialization format for the already existing API." msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" "முகவரி அமைப்பு: ref: `அடிப்படை உஉகுமொ பநிஇ விவரக்குறிப்பு <எளிய-ரெபோசிட்டரி-API-" "BASE>` இன்னும் பொருந்தும், ஏனெனில் இந்த விவரக்குறிப்பு ஏற்கனவே இருக்கும் பநிஇ க்கு " "கூடுதல் சீரியலைசேசன் வடிவமைப்பை மட்டுமே சேர்க்கிறது." -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" @@ -28032,7 +28404,7 @@ msgstr "" "இந்த விவரக்குறிப்பில் விவரிக்கப்பட்டுள்ள அனைத்து சாதொபொகு தொடர் பதில்களுக்கும் பின்வரும் " "தடைகள் பொருந்தும்:" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." @@ -28040,7 +28412,7 @@ msgstr "" "அனைத்து சாதொபொகு பதில்களும் * எப்போதும் * ஒரு வரிசை அல்லது பிற வகையை விட சாதொபொகு " "பொருளாக இருக்கும்." -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -28052,7 +28424,7 @@ msgstr "" "உறவினராக இருக்கலாம். உறவினர் என்றால், அவை தற்போதைய முகவரி உடன் உஉகுமொ போல " "தொடர்புடையவை." -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." @@ -28060,7 +28432,7 @@ msgstr "" "பநிஇ பதில்கள் மற்றும் வாடிக்கையாளர்களில் உள்ள எந்த அகராதி பொருள்களிலும் கூடுதல் விசைகள் " "சேர்க்கப்படலாம் ** அவர்கள் புரிந்து கொள்ளாத விசைகளை புறக்கணிக்க வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." @@ -28068,7 +28440,7 @@ msgstr "" "அனைத்து சாதொபொகு பதில்களிலும் `` மெட்டா`` விசையைக் கொண்டிருக்கும், அதில் பதிலின் " "உள்ளடக்கத்தை விட பதில் தொடர்பான தகவல்களைக் கொண்டுள்ளது." -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification ` that are not HTML specific still apply." @@ -28089,7 +28461,7 @@ msgstr "" "இதன் அனைத்து தேவைகளும்: Ref: `அடிப்படை உஉகுமொ பநிஇ விவரக்குறிப்பு ` அவை உஉகுமொ குறிப்பிட்டவை அல்ல." -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." @@ -28098,11 +28470,7 @@ msgstr "" "பயன்பாட்டிற்கு தனிப்பட்டதாக ஒதுக்கப்பட்டுள்ளன. அத்தகைய எந்தவொரு விசைக்கும் எதிர்கால தரநிலை " "ஒரு அர்த்தத்தை ஒதுக்காது." -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "திட்ட பட்டியல்" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" @@ -28110,7 +28478,7 @@ msgstr "" "இந்த விவரக்குறிப்பிற்கான ரூட் முகவரி ``/`` (இது அடிப்படை முகவரி ஐக் குறிக்கிறது) " "இரண்டு விசைகளைக் கொண்ட சாதொபொகு குறியிடப்பட்ட அகராதியாக இருக்கும்:" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." @@ -28118,8 +28486,8 @@ msgstr "" "`` திட்டங்கள்``: திட்டத்தின் பெயரின் சரத்தைக் குறிக்கும் `` பெயர்`` கொண்ட ஒவ்வொரு நுழைவும் " "ஒரு அகராதியாக இருக்கும் ஒரு வரிசை." -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." @@ -28127,12 +28495,12 @@ msgstr "" "`` மெட்டா``: முன்னர் விவரிக்கப்பட்டுள்ள பொதுவான மறுமொழி மேனிலை தரவு ____." -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "உதாரணமாக:" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -28147,7 +28515,7 @@ msgstr "" "இங்கே வித்தியாசமாகத் தேர்வு செய்கின்றன, எனவே அதை இயல்பாக்காத அல்லது இயல்பாக்கப்படுவதை " "நம்பியிருப்பது கேள்விக்குரிய களஞ்சியத்தின் செயல்படுத்தல் விவரத்தை நம்பியுள்ளது." -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -28222,23 +28612,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "ஒவ்வொரு தனிப்பட்ட கோப்பு அகராதியிலும் பின்வரும் விசைகள் உள்ளன:" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "`` கோப்பு பெயர்``: பிரதிநிதித்துவப்படுத்தப்படும் கோப்பு பெயர்." -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "`` url``: கோப்பிலிருந்து பெறக்கூடிய முகவரி." -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -28252,7 +28642,7 @@ msgstr "" "அல்லது ஒன்றும் இல்லை). இந்த ஆச் பெயர்கள் ** ** எப்போதும் சிறிய எழுத்துக்களாக இயல்பாக்கப்பட " "வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 msgid "" "The ``hashes`` dictionary **MUST** be present, even if no hashes are " "available for the file, however it is **HIGHLY** recommended that at least " @@ -28262,7 +28652,7 @@ msgstr "" "என்றாலும், குறைந்தது ஒரு பாதுகாப்பான, உத்தரவாதமளிக்கும் ஆச் எப்போதும் சேர்க்கப்பட வேண்டும் " "என்று ** மிகவும் ** பரிந்துரைக்கப்படுகிறது." -#: ../source/specifications/simple-repository-api.rst:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -28278,7 +28668,7 @@ msgstr "" "எப்போதும் சேர்க்கப்பட வேண்டும். இந்த விவரக்குறிப்பின் போது, `` சா 256`` குறிப்பாக " "பரிந்துரைக்கப்படுகிறது." -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -28289,7 +28679,7 @@ msgstr "" "மெட்டாடேட்டா புலம். இது இருக்கும் இடத்தில், நிறுவி கருவிகள் ** ** தேவையை நிறைவு " "செய்யாத பைதான் பதிப்பில் நிறுவும் போது பதிவிறக்கத்தை புறக்கணிக்க வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 msgid "" "Unlike ``data-requires-python`` in :ref:`the base HTML API specification " "`, the ``requires-python`` key does not require " @@ -28299,7 +28689,7 @@ msgstr "" "` `,` `-` விசைக்கு தேவையில்லை சாதொபொகு இயல்பாகவே " "எதையும் தவிர வேறு எந்த சிறப்பு தப்பிப்பும் தேவையில்லை." -#: ../source/specifications/simple-repository-api.rst:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -28309,7 +28699,7 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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 " @@ -28318,7 +28708,7 @@ msgstr "" "இது ஒரு பூலியனுக்கு பதிலாக ஆச்களின் அகராதியாக இருக்கும்போது, `` ஆச்கள்`` விசையின் " "அதே தேவைகள் மற்றும் பரிந்துரைகள் அனைத்தும் இந்த விசையிலும் உண்மையாகவே இருக்கின்றன." -#: ../source/specifications/simple-repository-api.rst:558 +#: ../source/specifications/simple-repository-api.rst:570 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 " @@ -28328,32 +28718,32 @@ msgstr "" "முக்கிய மதிப்பு உண்மையாக இருந்தால், மேனிலை தரவு கோப்பு உள்ளது, அது பொய்யானது என்றால் " "அது இல்லை." -#: ../source/specifications/simple-repository-api.rst:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" "சேவையகங்கள் மேனிலை தரவு கோப்பின் ஆச்களை முடிந்தால் கிடைக்கச் செய்ய பரிந்துரைக்கப்படுகிறது." -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -28367,15 +28757,23 @@ msgstr "" "` (`{file_url} .asc``). இந்த விசை இல்லை என்றால், " "கையொப்பம் இருக்கலாம் அல்லது இல்லாமல் இருக்கலாம்." -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 +#, fuzzy +#| 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 indicate that a file has been yanked with a specific reason. If " +#| "the ``yanked`` key is present and is a truthy value, then it **SHOULD** " +#| "be interpreted as indicating that the file pointed to by the ``url`` " +#| "field has been \"Yanked\" as per :ref:`the API yank specification `." 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" "`` yanked``: ஒரு ** விருப்பமான ** விசை, இது கோப்பு அலறப்பட்டதா என்பதைக் குறிக்க ஒரு " "பூலியனாக இருக்கலாம், அல்லது காலியாக இல்லாதது, ஆனால் இல்லையெனில் தன்னிச்சையானது, ஒரு " @@ -28384,24 +28782,24 @@ msgstr "" "சுட்டிக்காட்டப்பட்ட கோப்பு \"அசைக்கப்பட்டுள்ளது\" என்பதைக் குறிக்கும் வகையில் விளக்கப்பட " "வேண்டும்: ref: `api yank விவரக்குறிப்பு <எளிய-ச்பிரோபோசிட்டரி-அபி-யாங்க்>`." -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -28410,11 +28808,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -28426,11 +28824,11 @@ msgstr "" "ஒரு முகவரி ஆக இருக்க வேண்டும், இதில் `` தரவு-முன்னேற்றம்`` போன்ற விதிமுறைகள்: rew: " "`அடிப்படை உஉகுமொ பநிஇ விவரக்குறிப்பு `." -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -28515,11 +28913,11 @@ msgstr "" "` `உரை/HTML`` உள்ளடக்க வகையைப் பயன்படுத்த பநிஇ " "பதில்கள், இந்த விவரக்குறிப்பு` `` உரை/html`` `` `` `` `conternt." -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "பதிப்பு + வடிவமைப்பு தேர்வு" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -28533,7 +28931,7 @@ msgstr "" "விளைவிக்காமல் பநிஇ க்கு சாத்தியமான புதிய முக்கிய பதிப்பைச் சேர்க்க முடிந்தால் அது நன்மை " "பயக்கும்." -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation _ _." -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 msgid "" "While this spec won't fully describe the entirety of server-driven content " "negotiation, the flow is roughly:" @@ -28550,7 +28948,7 @@ msgstr "" "இந்த விவரக்குறிப்பு சேவையகத்தால் இயக்கப்படும் உள்ளடக்க பேச்சுவார்த்தை முழுவதையும் " "முழுமையாக விவரிக்காது என்றாலும், ஓட்டம் தோராயமாக:" -#: ../source/specifications/simple-repository-api.rst:705 +#: ../source/specifications/simple-repository-api.rst:724 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." @@ -28558,7 +28956,7 @@ msgstr "" "கிளையன்ட் ஒரு `` ஏற்றுக்கொள்` தலைப்பு கொண்ட ஒரு HTTP கோரிக்கையை அவர்கள் புரிந்து " "கொள்ளக்கூடிய அனைத்து பதிப்பு+வடிவமைப்பு உள்ளடக்க வகைகளையும் பட்டியலிடுகிறது." -#: ../source/specifications/simple-repository-api.rst:707 +#: ../source/specifications/simple-repository-api.rst:726 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 " @@ -28568,7 +28966,7 @@ msgstr "" "தேர்ந்தெடுக்கிறது, பின்னர் அந்த உள்ளடக்க வகையைப் பயன்படுத்தி ஒரு பதிலை வழங்குகிறது (`` " "ஏற்றுக்கொள்` தலைப்பு `` ஏற்றுக்கொள்: */ *``)." -#: ../source/specifications/simple-repository-api.rst:710 +#: ../source/specifications/simple-repository-api.rst:729 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 " @@ -28578,7 +28976,7 @@ msgstr "" "அவர்கள் எவ்வாறு பதிலளிக்க வேண்டும் என்பதற்கான 3 வெவ்வேறு விருப்பங்களுக்கு இடையில் அவர்கள் " "தேர்வு செய்ய முடியும்:" -#: ../source/specifications/simple-repository-api.rst:714 +#: ../source/specifications/simple-repository-api.rst:733 msgid "" "Select a default content type other than what the client has requested and " "return a response with that." @@ -28586,7 +28984,7 @@ msgstr "" "கிளையன்ட் கோரியதைத் தவிர வேறு இயல்புநிலை உள்ளடக்க வகையைத் தேர்ந்தெடுத்து, அதனுடன் " "பதிலைத் தரவும்." -#: ../source/specifications/simple-repository-api.rst:716 +#: ../source/specifications/simple-repository-api.rst:735 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 " @@ -28596,7 +28994,7 @@ msgstr "" "ஏற்றுக்கொள்ள முடியாதது `` பதிலைத் தரவும், மேலும் பதிலளிக்க இயல்புநிலை உள்ளடக்க வகையைத் " "தேர்ந்தெடுக்க சேவையகம் முடியவில்லை அல்லது விரும்பவில்லை." -#: ../source/specifications/simple-repository-api.rst:719 +#: ../source/specifications/simple-repository-api.rst:738 msgid "" "Return a HTTP ``300 Multiple Choices`` response that contains a list of all " "of the possible responses that could have been chosen." @@ -28604,7 +29002,7 @@ msgstr "" "ஒரு HTTP `` 300 பல தேர்வுகள்` `பதிலைத் தரவும், இது தேர்ந்தெடுக்கப்பட்ட சாத்தியமான " "அனைத்து பதில்களின் பட்டியலையும் கொண்டுள்ளது." -#: ../source/specifications/simple-repository-api.rst:721 +#: ../source/specifications/simple-repository-api.rst:740 msgid "" "The client interprets the response, handling the different types of " "responses that the server may have responded with." @@ -28612,7 +29010,7 @@ msgstr "" "கிளையன்ட் பதிலை விளக்குகிறது, சேவையகம் பதிலளித்திருக்கக்கூடிய பல்வேறு வகையான " "பதில்களைக் கையாளுகிறது." -#: ../source/specifications/simple-repository-api.rst:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -28624,7 +29022,7 @@ msgstr "" "** சாத்தியமான எல்லா பதில்களையும் கையாளத் தயாராக இருக்க வேண்டும், அந்த கிளையண்டிற்கு எந்த " "வகையிலும் மிகவும் அர்த்தமுள்ளதாக இருக்கும்." -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -28642,7 +29040,7 @@ msgstr "" "சாத்தியமில்லை, எனவே சிறந்த முறையில் இந்த பதில் `` 406 ஏற்றுக்கொள்ள முடியாத `` பிழை " "போலவே கருதப்படும்." -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -28655,7 +29053,7 @@ msgstr "" "ஏற்றுக்கொள்ளுங்கள்: பயன்பாடு/vnd.pypi.simple.latest+json` `` `` `` `` `` `` `` ` " "`` பயன்பாடு/vnd.pypi.simple.v1+json```)." -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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 " @@ -28665,19 +29063,19 @@ msgstr "" "வகைகளின் கமாவைப் பிரித்த பட்டியல். கோரப்படும் ஒவ்வொரு உள்ளடக்க வகைக்கும் இது மூன்று " "வெவ்வேறு வடிவங்களை ஆதரிக்கிறது:" -#: ../source/specifications/simple-repository-api.rst:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "`` $ type/$ subtype``" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "`` $ type/*``" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "``*/*``" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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 " @@ -28687,7 +29085,7 @@ msgstr "" "இருக்கும் `` $ வகை/$ துணை வகை``, ஏனெனில் நீங்கள் விரும்பும் பதிப்பு மற்றும் வடிவமைப்பைக் " "குறிப்பிடுவதற்கான ஒரே வழி இதுதான்." -#: ../source/specifications/simple-repository-api.rst:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -28703,7 +29101,7 @@ msgstr "" "`தலைப்பின்` தர மதிப்பு _ தொடரியல் பயன்படுத்தலாம்." -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -28718,7 +29116,7 @@ msgstr "" "குறைந்த தரத்துடன் நுழைவதை விட முன்னுரிமை உள்ளது, மேலும் தகுதி இல்லாத எந்தவொரு " "நுழைவும் `` 1`` தரத்திற்கு இயல்புநிலையாக இருக்கும்." -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -28729,7 +29127,7 @@ msgstr "" "முன்னுரிமையைப் பொருட்படுத்தாமல் தேர்ந்தெடுக்க இலவசம் என்பதை நினைவில் கொள்ள வேண்டும், மேலும் " "அவர்கள் செய்த உள்ளடக்க வகையை கூட ** ** கேட்கவில்லை." -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -28747,12 +29145,12 @@ msgstr "" "cf3696a81b341925f82f8cb527e656176987565/src/pip/_internal/collector." "py#-123-150> _" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" "ஒரு வாடிக்கையாளர் எவ்வாறு செயல்பட முடியும் என்பதற்கான எடுத்துக்காட்டு போல் இருக்கும்:" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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 " @@ -28762,11 +29160,11 @@ msgstr "" "ஆதரிக்க விரும்பினால், அவர்கள் விரும்பாத உள்ளடக்க வகைகளை `` ஏற்றுக்கொள்` தலைப்பிலிருந்து " "அகற்றி, அவற்றைப் பெறுவதை பிழையாக மாற்றிவிடுவார்கள்." -#: ../source/specifications/simple-repository-api.rst:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "மாற்று பேச்சுவார்த்தை வழிமுறைகள்" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -28780,11 +29178,11 @@ msgstr "" "சூழ்நிலைகள் உள்ளன. அந்த நிகழ்வுகளுக்கு இந்த விவரக்குறிப்பில் மாற்று பேச்சுவார்த்தை " "வழிமுறைகள் உள்ளன, அவை அதற்கு பதிலாக * விருப்பமாக * பயன்படுத்தப்படலாம்." -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "முகவரி அளவுரு" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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 " @@ -28794,7 +29192,7 @@ msgstr "" "வாடிக்கையாளர்களை அனுமதிக்க `` வடிவமைப்பு`` என்ற முகவரி அளவுருவை ஆதரிக்க தேர்வு " "செய்யலாம்." -#: ../source/specifications/simple-repository-api.rst:851 +#: ../source/specifications/simple-repository-api.rst:870 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 " @@ -28804,7 +29202,7 @@ msgstr "" "வேண்டும். பல உள்ளடக்க வகைகள், காடு கார்டுகள், தர மதிப்புகள் போன்றவற்றை கடந்து செல்வது ... " "** அல்ல ** ஆதரிக்கப்படவில்லை." -#: ../source/specifications/simple-repository-api.rst:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -28817,7 +29215,7 @@ msgstr "" "குறிப்புகளை ஒரு குறிப்பிட்ட பதிப்பு+வடிவமைப்போடு இணைக்க அனுமதிப்பதற்காக நோக்கமாக " "உள்ளது." -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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." @@ -28825,7 +29223,7 @@ msgstr "" "இந்த அளவுருவை ஆதரிக்காத சேவையகங்கள் பிழையைக் கொண்டிருக்கும்போது அதைத் திருப்பித் தரத் " "தேர்வுசெய்யலாம் அல்லது அவை எளிமையாக அதன் இருப்பை புறக்கணிக்கக்கூடும்." -#: ../source/specifications/simple-repository-api.rst:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -28840,11 +29238,11 @@ msgstr "" "எந்தவொரு பிழையும் தேர்வு செய்யத் தேர்வுசெய்யலாம், அல்லது நிலையான சேவையக பேச்சுவார்த்தை " "பொதுவாகக் கிடைக்காது,` 406, திரும்புவதற்கான இயல்புநிலை வகை)." -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "இறுதிப்புள்ளி உள்ளமைவு" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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 " @@ -28854,7 +29252,7 @@ msgstr "" "பேச்சுவார்த்தைகளைப் பயன்படுத்துவதன் இயல்பான விளைவு மற்றும் கிடைக்கக்கூடிய உள்ளடக்க வகைகளில் " "எது அவற்றின் இயல்புநிலை என்பதைத் தேர்ந்தெடுக்க சேவையகங்களை அனுமதிக்கிறது." -#: ../source/specifications/simple-repository-api.rst:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -28865,7 +29263,7 @@ msgstr "" "செயல்படுத்த முடியாவிட்டால், அதற்கு பதிலாக பயனர்கள் தங்கள் வாடிக்கையாளரை அவர்கள் விரும்பும் " "பதிப்பைத் தேர்ந்தெடுக்க வெளிப்படையாக கட்டமைக்க வேண்டும் என்றால், அது ஒரு உதவி உள்ளமைவு." -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -28881,7 +29279,7 @@ msgstr "" "தலைப்பைப் பயன்படுத்தி ஒரு கிளையன்ட் கோரிக்கையைச் செய்யும்போது, சேவையகம் அதைப் " "புறக்கணித்து, அந்த இறுதிப் புள்ளியுடன் ஒத்த உள்ளடக்க வகையை திருப்பித் தரலாம்." -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -28893,11 +29291,11 @@ msgstr "" "சேவையகத்திற்கு ஒரு கோரிக்கையைச் செய்யும்போது, * சரியான உள்ளடக்க வகையை உள்ளடக்கிய ஒரு " "`` `ஏற்றுக்கொள்`` தலைப்பை வெளியிடுங்கள்." -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "TUF உதவி - PEP 458" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -28913,7 +29311,7 @@ msgstr "" "இலக்கு அனைத்து வித்தியாசமான பிரதிநிதித்துவங்களைக் கொண்டிருக்கக்கூடும் என்ற உண்மையை TUF " "கிளையன்ட் கையாள முடியாது." -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -28925,7 +29323,7 @@ msgstr "" "words, a பாதை like ``simple/PROJECT/`` is not acceptable, because it " "technically பிரிவகம் பெறுநர் a directory." -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -28939,7 +29337,7 @@ msgstr "" "ஏற்றுக்கொள்` தலைப்பு போன்ற உண்மையான HTTP கோரிக்கையின் பிற அம்சங்களுக்கும் இதே சேதி " "உண்மையாக இருக்க முடியும்." -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -28951,7 +29349,7 @@ msgstr "" "`458`), மேலும் இந்த விவரக்குறிப்பு இதை எவ்வாறு பிரதிநிதித்துவப்படுத்துவது என்பது பற்றி " "ஒரு முடிவை எடுக்கிறது: PEP:` 458` மேனிலை தரவு." -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -28967,7 +29365,7 @@ msgstr "" "திட்டம்/vnd.pypi.simple.v1.html`` மற்றும் V1 சாதொபொகு வடிவம் `` எளிய/திட்டம்/vnd." "pypi.simple.v1.json`` ஆக இருக்கும்." -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " @@ -28977,7 +29375,7 @@ msgstr "" "ஒரு மாற்றுப்பெயராக இருப்பதால், இது மிகவும் வெளிப்படையான பெயரை இயல்பாக்குவது மிகவும் " "அர்த்தமுள்ளதாக இருக்கும்." -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." @@ -28985,7 +29383,7 @@ msgstr "" "அதேபோல் `` சமீபத்திய`` மெட்டாசன் இலக்குகளில் சேர்க்கப்படக்கூடாது, வெளிப்படையாக " "அறிவிக்கப்பட்ட பதிப்புகள் மட்டுமே ஆதரிக்கப்பட வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -28996,7 +29394,7 @@ msgstr "" "இயல்புநிலை செயல்படுத்தல் முடிவுகள் என்று ச்பெக் ஆசிரியர்கள் நம்புவதைக் குறிக்கிறது, ஆனால் " "இந்த முடிவுகளுடன் பொருந்தக்கூடிய எந்தவொரு தேவையையும் இது குறிக்கிறது." -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -29010,11 +29408,11 @@ msgstr "" "முயற்சித்தனர், இது வாடிக்கையாளர்களை தன்னால் முடிந்த சிறந்த தேர்வுகளைச் செய்ய " "முயற்சிக்கிறது." -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "சேவையகங்கள் பரிந்துரைக்கப்படுகிறது:" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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 " @@ -29025,7 +29423,7 @@ msgstr "" "முடிந்தவரை, அல்லது குறைந்தபட்சம் உஉகுமொ பதில்களைப் பயன்படுத்தும் கீழான போக்குவரத்தை அவர்கள் " "பெறும் வரை." -#: ../source/specifications/simple-repository-api.rst:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -29036,7 +29434,7 @@ msgstr "" "தெரிந்த எந்த உள்ளடக்க வகைகளும் இல்லை, சேவையகம் ஒருபோதும்` `300 பல தேர்வு`` பதிலைத் " "தரக்கூடாது, அதற்கு பதிலாக` `406 ஏற்றுக்கொள்ள முடியாதது`` பதிலைத் தரும்." -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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." @@ -29044,7 +29442,7 @@ msgstr "" "இருப்பினும், எண்ட்பாயிண்ட் உள்ளமைவைப் பயன்படுத்தத் தேர்வுசெய்தால், அந்த இறுதிப்புள்ளிக்கு " "எதிர்பார்க்கப்படும் உள்ளடக்க வகையில் `` 200 சரி`` பதிலைத் தர வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -29058,11 +29456,11 @@ msgstr "" "தரமான முன்னுரிமை மதிப்புகளையும் கணக்கில் எடுத்துக்கொள்கிறது, மேலும் இது `` உரை/HTML`` " "உள்ளடக்க வகையை கடைசி முயற்சியாக மட்டுமே பயன்படுத்த வேண்டும்." -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "வாடிக்கையாளர்கள் என்று பரிந்துரைக்கப்படுகிறது:" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 msgid "" "Support all 3 content types described in this spec, using server-driven " "content negotiation, for as long as they reasonably can." @@ -29071,7 +29469,7 @@ msgstr "" "சேவையகத்தால் இயக்கப்படும் உள்ளடக்க பேச்சுவார்த்தையைப் பயன்படுத்தி, அவை நியாயமான முறையில் " "முடிந்தவரை." -#: ../source/specifications/simple-repository-api.rst:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." @@ -29079,7 +29477,7 @@ msgstr "" "`` ஏற்றுக்கொள்` `தலைப்பைக் கட்டும் போது, நீங்கள் ஆதரிக்கும் அனைத்து உள்ளடக்க வகைகளையும் " "சேர்க்கவும்." -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -29093,7 +29491,7 @@ msgstr "" "பயன்படுத்துகிறீர்கள் என்றால், சில விளிம்பு நிகழ்வுகளில் நீங்கள் பாகுபடுத்த முடியாத சில " "வகையான உஉகுமொ பதில்கள் இருக்கக்கூடும் என்று நீங்கள் கவலைப்படுகிறீர்கள்)." -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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 " @@ -29103,7 +29501,7 @@ msgstr "" "ஒரு` `; q = 0.01`` மதிப்பை நீங்கள் * சேர்க்க வேண்டும் என்று பரிந்துரைக்கப்படுகிறது, இது " "நீங்கள் கோரும் ஒரே உள்ளடக்க வகையாக இல்லாவிட்டால்." -#: ../source/specifications/simple-repository-api.rst:984 +#: ../source/specifications/simple-repository-api.rst:1003 msgid "" "Explicitly select what versions they are looking for, rather than using the " "``latest`` meta version during normal operation." @@ -29111,7 +29509,7 @@ msgstr "" "இயல்பான செயல்பாட்டின் போது `` சமீபத்திய`` மேவு பதிப்பைப் பயன்படுத்துவதை விட, அவர்கள் " "தேடும் எந்த பதிப்புகளை வெளிப்படையாகத் தேர்ந்தெடுக்கவும்." -#: ../source/specifications/simple-repository-api.rst:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." @@ -29119,19 +29517,19 @@ msgstr "" "பதிலின் `` உள்ளடக்க-வகை`` ஐச் சரிபார்த்து, நீங்கள் எதிர்பார்த்த ஒன்றோடு பொருந்துகிறது " "என்பதை உறுதிப்படுத்தவும்." -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "செப்டம்பர் 2015: உஉகுமொ வடிவமைப்பின் ஆரம்ப வடிவம், இல்: PEP: `503`" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "சூலை 2016: ஒரு புதுப்பிப்பில்-பைதான் மேனிலை தரவு தேவைப்படுகிறது: PEP: `503`" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "மே 2019: \"யாங்க்\" உதவி, இல்: பெப்: `592`" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 msgid "" "July 2020: API versioning convention and metadata, and declaring the HTML " "format as API v1, in :pep:`629`" @@ -29139,7 +29537,7 @@ msgstr "" "சூலை 2020: பநிஇ பதிப்பு மாநாடு மற்றும் மேனிலை தரவு, மற்றும் உஉகுமொ வடிவமைப்பை பநிஇ " "V1 என அறிவித்தல், IN: PEP: `629`" -#: ../source/specifications/simple-repository-api.rst:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" @@ -29147,7 +29545,7 @@ msgstr "" "மே 2021: ஒரு தொகுப்பிலிருந்து சுயாதீனமாக தொகுப்பு மெட்டாடேட்டாவை வழங்குதல், IN: PEP: " "`658`" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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`" @@ -29156,7 +29554,7 @@ msgstr "" "செய்வதற்கான ஒரு பொறிமுறையுடன், இரு வடிவங்களையும் பநிஇ V1 என அறிவித்தல், IN: PEP: " "`691`" -#: ../source/specifications/simple-repository-api.rst:1004 +#: ../source/specifications/simple-repository-api.rst:1023 msgid "" "October 2022: project versions and file size and upload-time in the JSON " "format, in :pep:`700`" @@ -29164,7 +29562,7 @@ msgstr "" "அக்டோபர் 2022: திட்ட பதிப்புகள் மற்றும் கோப்பு அளவு மற்றும் சாதொபொகு வடிவத்தில் பதிவேற்ற " "நேரம், IN: PEP: `700`" -#: ../source/specifications/simple-repository-api.rst:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" @@ -29172,13 +29570,29 @@ msgstr "" "சூன் 2023: ஒரு தொகுப்பிலிருந்து சுயாதீனமாக தொகுப்பு மெட்டாடேட்டாவை வழங்கும் புலத்தை " "மறுபெயரிடுதல், IN: PEP: `714`" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 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:1028 +#, fuzzy +#| msgid "" +#| "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" +#| "`740`" +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" +"நவம்பர் 2024: உஉகுமொ மற்றும் சாதொபொகு வடிவங்களில் ஆதார மேனிலை தரவு, IN: PEP: `740`" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "மூல விநியோக வடிவம்" @@ -33181,6 +33595,13 @@ msgstr "" "வேலை செய்யப்படும் பயன்பாடு விநியோக விநியோகத்தை `` பிப்`` நிறுவக்கூடிய பைதான் " "தொகுப்பாக ஆதரிக்கும் என்ற அனுமானத்தை செய்வதைத் தவிர்க்கிறது." +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "பேக்கேசிங் பைதான் திட்டங்கள்" @@ -33932,6 +34353,40 @@ msgstr "" "மட்டுமே தொடங்கினால், * வழக்கமான தொகுப்புகள் * மற்றும் `__init __. பை`` (கோப்பு " "காலியாக இருந்தாலும் கூட) ஒட்டிக்கொள்ள பரிந்துரைக்கப்படுகிறது." +#, fuzzy +#~| msgid ":ref:`pyproject-toml-spec`" +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr ": ref: `pyproject-toml-spec`" + +#~ msgid "" +#~ "Below the root URL is another URL for each individual project contained " +#~ "within a repository. The format of this URL is ``//`` where the " +#~ "```` is replaced by the normalized name for that project, so a " +#~ "project named \"HolyGrail\" would have a URL like ``/holygrail/``. This " +#~ "URL must respond with a valid HTML5 page with a single anchor element per " +#~ "file for the project. The href attribute **MUST** be a URL that links to " +#~ "the location of the file for download, and the text of the anchor tag " +#~ "**MUST** match the final path component (the filename) of the URL. The " +#~ "URL **SHOULD** include a hash in the form of a URL fragment with the " +#~ "following syntax: ``#=``, where ```` is " +#~ "the lowercase name of the hash function (such as ``sha256``) and " +#~ "```` is the hex encoded digest." +#~ msgstr "" +#~ "ரூட் முகவரி க்கு கீழே ஒரு களஞ்சியத்தில் உள்ள ஒவ்வொரு தனிப்பட்ட திட்டத்திற்கும் மற்றொரு " +#~ "முகவரி உள்ளது. இந்த முகவரி இன் வடிவம் ``//`` ஆகும், அங்கு `` <திட்டம்> `` " +#~ "அந்த திட்டத்திற்கான இயல்பாக்கப்பட்ட பெயரால் மாற்றப்படுகிறது, எனவே \"ஓலி கிரெயில்\" " +#~ "என்ற திட்டத்திற்கு ``/ஓலிங்ரெயில்/`` போன்ற முகவரி இருக்கும். இந்த முகவரி " +#~ "திட்டத்திற்கான கோப்புக்கு ஒற்றை நங்கூர உறுப்புடன் செல்லுபடியாகும் HTML5 பக்கத்துடன் " +#~ "பதிலளிக்க வேண்டும். HREF பண்புக்கூறு ** பதிவிறக்கம் செய்வதற்கான கோப்பின் " +#~ "இருப்பிடத்துடன் இணைக்கும் முகவரி ஆக இருக்க வேண்டும், மேலும் நங்கூரம் குறிச்சொல்லின் உரை " +#~ "** ** முகவரி இன் இறுதி பாதை கூறுகளை (கோப்பு பெயர்) பொருத்த வேண்டும். முகவரி ** " +#~ "** பின்வரும் தொடரியல் கொண்ட ஒரு முகவரி துண்டு வடிவத்தில் ஒரு ஆசை சேர்க்க வேண்டும்: " +#~ "``# = ``, அங்கு `` `` என்பது ஆச் செயல்பாட்டின் " +#~ "சிறிய பெயர் (`` சா 256` `` `` `` `` `` `` `` `` `." + +#~ msgid "Adding \"Yank\" Support to the Simple API" +#~ msgstr "எளிய பநிஇ க்கு \"யாங்க்\" ஆதரவைச் சேர்ப்பது" + #~ msgid "Signing the distribution packages" #~ msgstr "விநியோக தொகுப்புகளில் கையொப்பமிடுதல்" diff --git a/locales/th/LC_MESSAGES/messages.po b/locales/th/LC_MESSAGES/messages.po index 718333739..c2f8cbf9f 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -163,11 +163,11 @@ msgid "" "`this guide`_ before translating on Weblate." msgstr "" -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -183,22 +183,22 @@ msgid "" "original reference:" msgstr "" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " "you'll need:" msgstr "" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9925,32 +9925,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9959,7 +9967,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9983,83 +9991,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10068,26 +10076,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10095,28 +10103,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10124,33 +10132,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13525,7 +13533,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13535,7 +13543,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13628,9 +13636,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16490,29 +16500,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17325,6 +17335,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17900,7 +18037,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18690,10 +18827,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18856,6 +18993,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19105,6 +19374,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19837,7 +20107,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19852,7 +20122,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19867,14 +20137,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21264,6 +21530,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21303,433 +21585,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21738,7 +22012,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21750,7 +22024,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21760,18 +22034,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21779,11 +22053,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21791,7 +22065,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21801,7 +22075,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21811,7 +22085,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21819,28 +22093,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21849,37 +22123,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21887,19 +22161,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21958,7 +22228,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22019,23 +22311,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22044,14 +22336,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22061,7 +22353,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22069,14 +22361,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22086,45 +22378,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22133,35 +22425,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22170,11 +22461,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22182,11 +22473,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22249,11 +22540,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22262,65 +22553,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22328,7 +22619,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22339,7 +22630,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22348,33 +22639,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22384,7 +22675,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22394,7 +22685,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22402,7 +22693,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22413,22 +22704,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22437,25 +22728,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22463,13 +22754,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22479,18 +22770,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22498,7 +22789,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22508,7 +22799,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22516,11 +22807,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22531,7 +22822,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22539,7 +22830,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22548,7 +22839,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22556,7 +22847,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22566,20 +22857,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22587,7 +22878,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22596,18 +22887,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22615,13 +22906,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22630,23 +22921,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22655,73 +22946,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25728,6 +26030,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/tr/LC_MESSAGES/messages.po b/locales/tr/LC_MESSAGES/messages.po index 113a3ce4a..562394270 100644 --- a/locales/tr/LC_MESSAGES/messages.po +++ b/locales/tr/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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2024-10-16 20:19+0000\n" "Last-Translator: Emr \n" "Language-Team: Turkish `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9928,32 +9928,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9962,7 +9970,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -9986,83 +9994,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10071,26 +10079,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10098,28 +10106,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10127,33 +10135,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13528,7 +13536,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13538,7 +13546,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13631,9 +13639,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16493,29 +16503,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17328,6 +17338,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17903,7 +18040,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18693,10 +18830,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18859,6 +18996,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "" @@ -19108,6 +19377,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19840,7 +20110,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19855,7 +20125,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19870,14 +20140,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21267,6 +21533,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21306,433 +21588,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21741,7 +22015,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21753,7 +22027,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21763,18 +22037,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21782,11 +22056,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21794,7 +22068,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21804,7 +22078,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21814,7 +22088,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21822,28 +22096,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21852,37 +22126,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21890,19 +22164,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21961,7 +22231,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22022,23 +22314,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22047,14 +22339,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22064,7 +22356,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22072,14 +22364,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22089,45 +22381,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22136,35 +22428,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22173,11 +22464,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22185,11 +22476,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22252,11 +22543,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22265,65 +22556,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22331,7 +22622,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22342,7 +22633,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22351,33 +22642,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22387,7 +22678,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22397,7 +22688,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22405,7 +22696,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22416,22 +22707,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22440,25 +22731,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22466,13 +22757,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22482,18 +22773,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22501,7 +22792,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22511,7 +22802,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22519,11 +22810,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22534,7 +22825,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22542,7 +22833,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22551,7 +22842,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22559,7 +22850,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22569,20 +22860,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22590,7 +22881,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22599,18 +22890,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22618,13 +22909,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22633,23 +22924,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22658,73 +22949,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25731,6 +26033,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/uk/LC_MESSAGES/messages.po b/locales/uk/LC_MESSAGES/messages.po index bd79a6fdb..91265fee4 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2024-03-01 20:00+0000\n" "Last-Translator: Sviatoslav Sydorenko \n" "Language-Team: Ukrainian `. You can install or upgrade nox using ``pip``:" msgstr "" ":doc:`Nox `. Ви можете встановити чи оновити nox за допомогою " "``pip``:" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 #, fuzzy #| msgid "" #| "Python 3.8. Our build scripts are usually tested with Python 3.8 only. " @@ -296,7 +296,7 @@ msgstr "" "guide:starting/installation>`, аби встановити Python 3.8 у вашій операційній " "системі." -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 #, fuzzy msgid "" "To build the guide, run the following shell command in the project's root " @@ -305,7 +305,7 @@ msgstr "" "Для збирання цього керівництва запустіть нижченаведену команду bash у " "директорії із джерельним кодом:" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -317,7 +317,7 @@ msgstr "" "керівництва у веб-оглядачі, втім рекомендується отримувати доступ до " "керівництва через HTTP сервер." -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" @@ -325,15 +325,15 @@ msgstr "" "Ви можете зібрати керівництво і організувати доступ до нього через HTTP " "сервер за допомогою наведеної команди:" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "Керівництво можна буде переглядати через http://localhost:8000." -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "Куди це керівництво публікується" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " @@ -343,11 +343,11 @@ msgstr "" "readthedocs.org/projects/python-packaging-user-guide/. Доступ до нього " "надається із додаткового домену через фронт-енд Fast.ly." -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "Керівництво по стилю" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -359,11 +359,11 @@ msgstr "" "по стилю, ваші внески допоможуть доповнити єдине ціле і спростять їх " "схвалення для проєкту." -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "Призначення" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." @@ -372,11 +372,11 @@ msgstr "" "публікувати та встановлювати проєкти на Python, використовуючи сучасні " "засоби." -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "Охоплення" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." @@ -384,7 +384,7 @@ msgstr "" "Керівництво має відповісти на запитання і вирішити проблеми за допомогою " "точних і влучних порад." -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -398,17 +398,17 @@ msgstr "" "керівництво описує лише частини pip, що необхідні для виконання конкретних " "завдань, описаних у цьому керівництві." -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "Читачі" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "" "Цільова аудиторія цього керівництва — усі, хто користується Pythonом із " "пакунками." -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " @@ -418,7 +418,7 @@ msgstr "" "іншого віку, статі, мати іншу освіту та належати іншій культурі, ніж ви, але " "вони так само заслуговують дізнаватися про пакування, як і ви." -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " @@ -429,11 +429,11 @@ msgstr "" "художники, учні так само, як і професійні розробники програмного " "забезпечення." -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "Вираження і тон" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." @@ -441,7 +441,7 @@ msgstr "" "Під час написання цього керівництва, намагайтеся виражатися доступно й " "скромно, навіть якщо у вас є усі відповіді." -#: ../source/contribute.rst:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -453,7 +453,7 @@ msgstr "" "їй подобається працювати із вами. Ця людина спитала вас і ви знаєте " "відповідь. Як би ви відповідали? *Саме так* і варто писати це керівництво." -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -469,7 +469,7 @@ msgstr "" "Цим вам дозволено закінчити речення прийменником, якщо саме так ви бажаєте " "його закінчити." -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -481,15 +481,15 @@ msgstr "" "пожартувати, однак якщо ви покриваєте делікатну рекомендацію щодо безпеки, " "можливо, вам захочеться взагалі уникнути жартів." -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "Домовленості й механіка" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "**Звертайтеся до читачів**" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -509,11 +509,11 @@ msgstr "Правильно: Ви можете встановити це, вик msgid "Right: To install it, run…" msgstr "Правильно: Щоб встановити це, виконайте…" -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "**Оголошуйте припущення**" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -525,11 +525,11 @@ msgstr "" "побачить узагалі. Якщо ж ви збираєтеся робити припущення, то скажіть, на які " "саме припущення ви покладаєтесь." -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "**Щедро додавайте перехресні посилання**" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " @@ -539,11 +539,11 @@ msgstr "" "керівництва, яка розповідає про нього, або ж на відповідну документацію " "деінде. Не змушуйте читачів шукати інформацію." -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "**Дотримуйтеся практик іменування**" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -567,11 +567,11 @@ msgstr "Неправильно: ...розміщено на github." msgid "Right: …hosted on GitHub." msgstr "Правильно: ...розміщено на GitHub." -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "**Використовуйте ґендерно нейтральний стиль**" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -593,11 +593,11 @@ msgstr "Правильно: Доглядачі завантажують файл msgid "Right: A maintainer uploads the file. Then the maintainer…" msgstr "Правильно: Доглядачі завантажують файл. А потім ці доглядачі…" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "**Заголовки**" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -609,7 +609,7 @@ msgstr "" "Наприклад, читачі можуть хотіти дізнатися *Як я можу встановити MyLibrary?*, " "тож хорошим заголовком буде *Встановити MyLibrary*." -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -625,11 +625,11 @@ msgstr "Неправильно: Речі, Які Вам Слід Знати Пр msgid "Right: Things you should know about Python" msgstr "Правильно: Речі, які вам слід знати про Python" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "**Числа**" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -2931,7 +2931,7 @@ msgid "" msgstr "" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 #, fuzzy #| msgid "Version" msgid "Versioning" @@ -4343,7 +4343,7 @@ msgstr "Опис" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "Приклади" @@ -8994,9 +8994,9 @@ msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -10459,32 +10459,42 @@ msgid "poetry-core" msgstr "poetry" #: ../source/guides/writing-pyproject-toml.rst:317 +#, fuzzy +#| msgid "build" +msgid "uv-build" +msgstr "build" + +#: ../source/guides/writing-pyproject-toml.rst:318 msgid "1.27.0" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:318 +#: ../source/guides/writing-pyproject-toml.rst:319 msgid "77.0.3" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:319 +#: ../source/guides/writing-pyproject-toml.rst:320 msgid "3.12" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:320 +#: ../source/guides/writing-pyproject-toml.rst:321 msgid "2.4.0" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:321 +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "``license``" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -10493,7 +10503,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10517,7 +10527,7 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 #, fuzzy @@ -10525,77 +10535,77 @@ msgstr "" msgid "``license-files``" msgstr "``license``" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "``classifiers``" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10604,26 +10614,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "``urls``" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10631,28 +10641,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10660,35 +10670,35 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 #, fuzzy #| msgid "For example:" msgid "A full example" msgstr "Наприклад:" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -14091,7 +14101,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -14101,7 +14111,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -14197,9 +14207,11 @@ msgstr "Зміни" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "Специфікація" @@ -17125,29 +17137,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17976,6 +17988,135 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +#, fuzzy +#| msgid "Installer" +msgid "Installers" +msgstr "Встановлювач" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -18553,7 +18694,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 #, fuzzy #| msgid "Packaging tool recommendations" msgid "Recommendations" @@ -19362,10 +19503,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -19528,6 +19669,145 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +#| msgid "Project name" +msgid "Project Status Markers" +msgstr "Назва проєкту" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +#| msgid "Installation format" +msgid "Installer semantics: none." +msgstr "Формат встановлення" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +#| msgid "Installer" +msgid "Installer semantics:" +msgstr "Встановлювач" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +#, fuzzy +msgid "``deprecated``" +msgstr "Перевизначення залежностей" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "pyproject.toml" @@ -19788,6 +20068,7 @@ msgid "``dependency-groups``" msgstr "Перевизначення залежностей" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 #, fuzzy #| msgid "pyproject.toml" @@ -20536,8 +20817,10 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" -msgstr "" +#, fuzzy +#| msgid "pyproject.toml" +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr "pyproject.toml" #: ../source/specifications/pylock-toml.rst:676 msgid "" @@ -20551,7 +20834,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -20566,16 +20849,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -#, fuzzy -#| msgid "pyproject.toml" -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "pyproject.toml" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21974,6 +22251,24 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +#, fuzzy +#| msgid "Data schema" +msgid "PyPA schemas" +msgstr "Структура даних" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -22019,438 +22314,433 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +#, fuzzy +msgid "Normalized Names" +msgstr "Переклади" + +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 -msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"In addition to the above, the following constraints are placed on the API:" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 -msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" #: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" #: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 -msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 -msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 -msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" -msgstr "" +#: ../source/specifications/simple-repository-api.rst:103 +#, fuzzy +#| msgid "Contents" +msgid "Clients" +msgstr "Зміст" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 +#: ../source/specifications/simple-repository-api.rst:121 #, fuzzy -msgid "Normalized Names" +msgid "HTML Serialization" msgstr "Переклади" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +#, fuzzy +#| msgid "Project" +msgid "Project List" +msgstr "Проєкт" + +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 #, fuzzy -#| msgid "Installer" -msgid "Installers" -msgstr "Встановлювач" +#| msgid "Project name" +msgid "Project Detail" +msgstr "Назва проєкту" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:158 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:183 +msgid "" +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:202 +msgid "" +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:211 +msgid "" +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:220 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:242 +msgid "" +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:245 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:247 +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:253 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:261 +msgid "" +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -#, fuzzy -#| msgid "Contents" -msgid "Clients" -msgstr "Зміст" +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." +msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 +msgid "" +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -22459,7 +22749,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -22471,7 +22761,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -22481,18 +22771,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -22500,11 +22790,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -22512,7 +22802,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -22522,7 +22812,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -22532,7 +22822,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -22540,28 +22830,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -22570,38 +22860,38 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 #, fuzzy msgid "JSON Serialization" msgstr "Переклади" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -22609,19 +22899,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -#, fuzzy -#| msgid "Project" -msgid "Project List" -msgstr "Проєкт" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 #, fuzzy #| msgid "For example:" msgid "As an example:" msgstr "Наприклад:" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -22684,7 +22968,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22747,23 +23051,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22772,14 +23076,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22789,7 +23093,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22797,14 +23101,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22814,45 +23118,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22861,35 +23165,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22898,11 +23201,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22910,11 +23213,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22979,13 +23282,13 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 #, fuzzy #| msgid "Version" msgid "Version + Format Selection" msgstr "Version" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22994,65 +23297,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -23060,7 +23363,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23071,7 +23374,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -23080,33 +23383,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -23116,7 +23419,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -23126,7 +23429,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -23134,7 +23437,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -23145,22 +23448,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -23169,25 +23472,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23195,13 +23498,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -23211,18 +23514,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23230,7 +23533,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -23240,7 +23543,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -23248,11 +23551,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -23263,7 +23566,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -23271,7 +23574,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -23280,7 +23583,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -23288,7 +23591,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -23298,20 +23601,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23319,7 +23622,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -23328,18 +23631,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -23347,13 +23650,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23362,23 +23665,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23387,73 +23690,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -26510,6 +26824,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" @@ -27068,6 +27389,11 @@ msgid "" "the file is empty)." msgstr "" +#, fuzzy +#~| msgid "pyproject.toml" +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr "pyproject.toml" + #, fuzzy #~| msgid "Distribution Package" #~ msgid "Signing the distribution packages" diff --git a/locales/vi/LC_MESSAGES/messages.po b/locales/vi/LC_MESSAGES/messages.po index 1bab3f297..ff5da762b 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2024-07-25 13:10+0000\n" "Last-Translator: Lenny Tran \n" "Language-Team: Vietnamese `. You can install or upgrade nox using ``pip``:" msgstr "" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -9955,32 +9955,40 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 -msgid "1.27.0" +msgid "uv-build" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:318 -msgid "77.0.3" +msgid "1.27.0" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:319 -msgid "3.12" +msgid "77.0.3" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:320 -msgid "2.4.0" +msgid "3.12" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -9989,7 +9997,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10013,83 +10021,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10098,26 +10106,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10125,28 +10133,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10154,33 +10162,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13555,7 +13563,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13565,7 +13573,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13658,9 +13666,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "" @@ -16520,29 +16530,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17355,6 +17365,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -17930,7 +18067,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18720,10 +18857,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -18886,6 +19023,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "Specifications" @@ -19137,6 +19406,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19869,7 +20139,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" +msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" #: ../source/specifications/pylock-toml.rst:676 @@ -19884,7 +20154,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -19899,14 +20169,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21298,6 +21564,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21337,433 +21619,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 -msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +#: ../source/specifications/simple-repository-api.rst:66 +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:75 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 -msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" +#: ../source/specifications/simple-repository-api.rst:158 +msgid "" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:189 +msgid "" +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21772,7 +22046,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21784,7 +22058,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21794,18 +22068,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21813,11 +22087,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21825,7 +22099,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21835,7 +22109,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -21845,7 +22119,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -21853,28 +22127,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -21883,37 +22157,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -21921,19 +22195,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -21992,7 +22262,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22053,23 +22345,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22078,14 +22370,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22095,7 +22387,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22103,14 +22395,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22120,45 +22412,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22167,35 +22459,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22204,11 +22495,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22216,11 +22507,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22283,11 +22574,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22296,65 +22587,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22362,7 +22653,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22373,7 +22664,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22382,33 +22673,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22418,7 +22709,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22428,7 +22719,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22436,7 +22727,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22447,22 +22738,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22471,25 +22762,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22497,13 +22788,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22513,18 +22804,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22532,7 +22823,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22542,7 +22833,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22550,11 +22841,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22565,7 +22856,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22573,7 +22864,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22582,7 +22873,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22590,7 +22881,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22600,20 +22891,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22621,7 +22912,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22630,18 +22921,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22649,13 +22940,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22664,23 +22955,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22689,73 +22980,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25762,6 +26064,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" diff --git a/locales/zh_Hans/LC_MESSAGES/messages.po b/locales/zh_Hans/LC_MESSAGES/messages.po index 7f9d356d3..c628bfc90 100644 --- a/locales/zh_Hans/LC_MESSAGES/messages.po +++ b/locales/zh_Hans/LC_MESSAGES/messages.po @@ -40,9 +40,10 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-19 01:36+0000\n" -"PO-Revision-Date: 2025-07-22 07:02+0000\n" -"Last-Translator: rand777 \n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" +"PO-Revision-Date: 2025-08-12 13:50+0000\n" +"Last-Translator: 大王叫我来巡山 " +"\n" "Language-Team: Chinese (Simplified Han script) \n" "Language: zh_Hans\n" @@ -144,8 +145,8 @@ msgid "" msgstr "" "指南的重点是完成一项具体的任务,并可以假定有一定程度的前提知识。这类似于教" "程,但有一个狭窄和明确的重点,并可以根据需要提供大量的注意事项和附加信息。他" -"们还可以讨论完成任务的多种方法。 :doc:`示例指南式文档 `。" +"们还可以讨论完成任务的多种方法。 :doc:`example guide-style document `。" #: ../source/contribute.rst:60 ../source/discussions/index.rst:2 msgid "Discussions" @@ -158,7 +159,8 @@ msgid "" "style document `." msgstr "" "讨论 (Discussions) 的重点是理解和信息。这些探索一个特定的主题,没有具体的目" -"标。 :doc:`示例讨论式文件 `。" +"标。 :doc:`example discussion-style document `。" #: ../source/contribute.rst:67 msgid "Specifications" @@ -172,7 +174,8 @@ msgid "" "metadata>`." msgstr "" "规范 (Specifications) 是参考文档,侧重于全面记录包装工具之间互操作性的一致接" -"口。 :doc:`范例规范式文件 `。" +"口。 :doc:`example specification-style document `。" #: ../source/contribute.rst:75 msgid "Translations" @@ -222,11 +225,11 @@ msgstr "" "如果你不熟悉 reStructuredText (RST) 语法,请在 Weblate 上翻译之前阅读 `本指" "南`_ 。" -#: ../source/contribute.rst:105 +#: ../source/contribute.rst:118 msgid "**Do not translate the text in reference directly**" msgstr "**不要直接翻译参考(reference)中的文字**" -#: ../source/contribute.rst:107 +#: ../source/contribute.rst:106 msgid "" "When translating the text in reference, please do not translate them " "directly." @@ -242,11 +245,11 @@ msgid "" "original reference:" msgstr "正确:使用你自己的语言翻译以下文本并添加原始引用:" -#: ../source/contribute.rst:124 +#: ../source/contribute.rst:123 msgid "Building the guide locally" msgstr "在本地构建指南" -#: ../source/contribute.rst:126 +#: ../source/contribute.rst:125 msgid "" "Though not required to contribute, it may be useful to build this guide " "locally in order to test your changes. In order to build this guide locally, " @@ -255,11 +258,11 @@ msgstr "" "虽然这不需要做出贡献,但为了测试你的改动,在本地建立本指南可能是有用的。为了" "在本地构建本指南,你需要:" -#: ../source/contribute.rst:130 +#: ../source/contribute.rst:129 msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" msgstr ":doc:`Nox `。你可以用 ``pip`` 安装或升级 nox:" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " "the :doc:`Hitchhiker's Guide to Python installation instructions ` 将 Python 3.11 安装于你的操作系统中。" -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 msgid "" "To build the guide, run the following shell command in the project's root " "folder:" msgstr "要构建指南,在项目根文件夹中运行以下 shell 命令:" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -287,21 +290,21 @@ msgstr "" "``index.html`` 文件,并在浏览器中查看指南,但我们建议使用 HTTP 服务器为指南服" "务。" -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" msgstr "你可以使用以下命令建立指南并通过 HTTP 服务器为其提供服务:" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "该指南将可通过 http://localhost:8000 进行浏览。" -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "指南的部署地点" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " @@ -311,11 +314,11 @@ msgstr "" "python-packaging-user-guide/ 。它由一个自定义域名提供服务,并由 Fast.ly 提供" "支持。" -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "风格指南" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -326,11 +329,11 @@ msgstr "" "遵循样式指南,你的贡献将有助于增加一个有凝聚力的整体,并使你的贡献更容易被项" "目接受。" -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "目的" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 msgid "" "The purpose of the |PyPUG| is to be the authoritative resource on how to " "package, publish, and install Python projects using current tools." @@ -338,17 +341,17 @@ msgstr "" "|PyPUG| 的目的是成为关于如何使用当前工具打包、发布和安装 Python 项目的权威资" "源。" -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "范围" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." msgstr "该指南旨在通过准确和有针对性的建议来回答问题和解决问题。" -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -360,15 +363,15 @@ msgstr "" "个命令、选项和设置。pip 文档详细描述了它们中的每一个,而本指南只描述了完成本" "指南中描述的特定任务所需的 pip 部分。" -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "读者" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "本指南的受众是任何使用 Python 包的人。" -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " @@ -377,7 +380,7 @@ msgstr "" "不要忘记,Python 社区是很大,而且很受欢迎的。读者可能与你的年龄、性别、教育、" "文化等不尽相同,但他们和你一样值得学习包装知识。" -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " @@ -386,11 +389,11 @@ msgstr "" "特别是要记住,不是所有使用 Python 的人都把自己看作是程序员。本指南的受众包括" "天文学家,画家或学生以及专业的软件开发人员。" -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "声音和语气" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 msgid "" "When writing this guide, strive to write with a voice that's approachable " "and humble, even if you have all the answers." @@ -398,7 +401,7 @@ msgstr "" "在撰写本指南时,即使你已经掌握了所有答案,也要努力以平易近人且谦逊的语气写" "作。" -#: ../source/contribute.rst:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -409,7 +412,7 @@ msgstr "" "一起工作,他们也喜欢和你一起工作。那个人问了你一个问题,你知道答案。你怎么回" "答?*这* 就是你应该如何写这个指南的方式。" -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -422,7 +425,7 @@ msgstr "" "话,还是听起来像你在演戏或发表演讲?随意使用缩略语,不要担心拘泥于繁琐的语法" "规则。你在此允许用介词来结束一个句子,如果这是你想结束它的话。" -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -433,15 +436,15 @@ msgstr "" "程,开个玩笑是可以的,但如果你涉及的是一个敏感的安全建议,你可能要完全避免玩" "笑。" -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "公约和机制" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "**写给读者**" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -459,11 +462,11 @@ msgstr "正确:你可以安装它,方法是运行…" msgid "Right: To install it, run…" msgstr "正确:要安装它,请运行…" -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "**陈述假设**" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -473,11 +476,11 @@ msgstr "" "避免做出未说明的假设。在网上阅读意味着指南的任何一页都可能是读者所看到的指南" "的第一页。如果你要做假设,那就要说明你要做什么假设。" -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "**慷慨地交叉参考**" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " @@ -486,11 +489,11 @@ msgstr "" "当你第一次提到一个工具或做法时,请链接到指南中涉及它的部分,或链接到其他地方" "的相关文件。这样可以为读者省去搜索的麻烦。" -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "**尊重命名的做法**" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -512,11 +515,11 @@ msgstr "错误:...托管在 github 上。" msgid "Right: …hosted on GitHub." msgstr "正确:……托管在 GitHub 上。" -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "**使用中性风格**" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -537,11 +540,11 @@ msgstr "正确:一个维护人员上传了文件。然后他们…" msgid "Right: A maintainer uploads the file. Then the maintainer…" msgstr "正确:A maintainer uploads the file. Then the maintainer…" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "**标题**" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -552,7 +555,7 @@ msgstr "" "如,读者可能想知道 *How do I install MyLibrary?*,所以一个好的标题可能是 " "*Install MyLibrary* 。" -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -567,11 +570,11 @@ msgstr "错误:Things You Should Know About Python" msgid "Right: Things you should know about Python" msgstr "正确:Things you should know about Python" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "**数字**" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -787,9 +790,9 @@ msgstr "" "分发包(distribution package)是可安装的一段软件。通常情况下,它与 \"项目" "\"(project)同义。当你输入 ``pip install pkg`` ,或在 ``pyproject.toml`` 文" "件中写入 ``dependencies = [\"pkg\"]`` 时, ``pkg`` 就是一个分发包的名称。当你" -"在 PyPI_(目前最广为人知的 Python 库和工具的集中安装源)上搜索或浏览时,所看" -"到的列表就是分发包的列表。另外,\"分发包\" 这个术语也可以用来指代包含项目特定" -"版本的某个文件。" +"在PyPI_(目前最广为人知的 Python 库和工具的集中安装源)上搜索或浏览时,所看到" +"的列表就是分发包的列表。另外,\"分发包\" 这个术语也可以用来指代包含项目特定版" +"本的某个文件。" #: ../source/discussions/distribution-package-vs-import-package.rst:24 msgid "" @@ -849,9 +852,9 @@ msgid "" "blindly install the PyPI package ``foo`` if you see ``import foo``; this may " "install an unintended, and potentially even malicious package.)" msgstr "" -"然而,这只是一种约定。PyPI 和其他包索引 **并不强制要求** 分发包的名称与其提供" -"的导入包之间存在任何关系。(其结果是,当你看到 ``import foo`` 时,不能盲目地" -"安装 PyPI 包 ``foo`` ;这样可能会安装一个非预期的,甚至是恶意的包。)" +"然而,这只是一种约定。PyPI 和其他包索引 *并不强制要求* 分发包的名称与其提供的" +"导入包之间存在任何关系。(其结果是,当你看到 ``import foo`` 时,不能盲目地安" +"装 PyPI 包 ``foo`` ;这样可能会安装一个非预期的,甚至是恶意的包。)" #: ../source/discussions/distribution-package-vs-import-package.rst:59 msgid "" @@ -958,7 +961,7 @@ msgid "" msgstr "" "虽然 PyPI 和 Python 打包工具(例如::ref:`pip`)是分发 Python 包的主要方式," "但它们也常常被包含在其他打包生态系统中。这些重新打包的工作统称为*下游*打包" -"(你自己的工作则称为*上游*打包),包括 Linux 发行版、Conda、Homebrew 和 " +"(你自己的工作则称为 *上游* 打包),包括 Linux 发行版、Conda、Homebrew 和 " "MacPorts 等项目。它们通常旨在为无法仅通过 Python 打包工具处理的用例提供更好的" "支持,例如与特定操作系统的原生集成,或与特定版本的非 Python 软件确保兼容性。" @@ -977,12 +980,12 @@ msgid "" "the risk of applying inconsistent solutions to the same problem." msgstr "" "本次讨论试图解释下游打包通常是如何进行的,以及下游打包者通常面临的额外挑战。" -"它旨在提供一些可选的指南,项目维护者可以选择遵循这些指南,从而帮助使下游打包*" -"显著*更轻松(同时不会给上游项目带来任何重大的维护麻烦)。请注意,这并不是一个" -"全有或全无的提议——上游维护者所做的任何事情都是有用的,即使只是其中的一小部" -"分。下游维护者也愿意准备补丁来解决这些问题。将这些补丁合并会非常有帮助,因为" -"这消除了不同下游需要携带并持续重新应用相同补丁的必要性,以及对同一问题应用不" -"一致解决方案的风险。" +"它旨在提供一些可选的指南,项目维护者可以选择遵循这些指南,从而帮助使下游打包 " +"*明显地* 更轻松(同时不会给上游项目带来任何重大的维护麻烦)。请注意,这并不是" +"一个全有或全无的提议——上游维护者所做的任何事情都是有用的,即使只是其中的一小" +"部分。下游维护者也愿意准备补丁来解决这些问题。将这些补丁合并会非常有帮助,因" +"为这消除了不同下游需要携带并持续重新应用相同补丁的必要性,以及对同一问题应用" +"不一致解决方案的风险。" #: ../source/discussions/downstream-packaging.rst:31 msgid "" @@ -1130,10 +1133,9 @@ msgid "" "documentation, and any other files that may be useful to end users, such as " "shell completions, editor support files, and so on." msgstr "" -"理想情况下,**在 PyPI 上发布的源分发存档应包括来自软件包 Git " -"存储库的所有文件**,这些文件是构建软件包本身、运行其测试套件、构建和安装其文" -"档以及可能对最终用户有用的任何其他文件所必需的,如 shell " -"补全文件、编辑器支持文件等。" +"理想情况下,**在 PyPI 上发布的源分发存档应包括来自软件包 Git 存储库的所有文件" +"**,这些文件是构建软件包本身、运行其测试套件、构建和安装其文档以及可能对最终" +"用户有用的任何其他文件所必需的,如 shell 补全文件、编辑器支持文件等。" #: ../source/discussions/downstream-packaging.rst:107 msgid "" @@ -1145,10 +1147,10 @@ msgid "" "files) should also be included, to help downstreams determine the needed " "dependencies, and check for changes in them." msgstr "" -"这一点仅适用于属于软件包本身的文件。下游打包过程与Python软件包管理器非常类似" -",将提供您的软件包及其构建脚本所需的必要的Python依赖项、系统工具和外部库。然" -"而,还应包括列出这些依赖项的文件(例如,``requirements*.txt`` " -"文件),帮助下游确定所需的依赖项,并检查其中是否有变化。" +"这一点仅适用于属于软件包本身的文件。下游打包过程与Python软件包管理器非常类" +"似,将提供您的软件包及其构建脚本所需的必要的Python依赖项、系统工具和外部库。" +"然而,还应包括列出这些依赖项的文件(例如,``requirements*.txt`` 文件),帮助" +"下游确定所需的依赖项,并检查其中是否有变化。" #: ../source/discussions/downstream-packaging.rst:115 msgid "" @@ -1180,8 +1182,8 @@ msgid "" msgstr "" "另一方面,一些项目(例如NumPy_)决定在其已安装的软件包中包含测试。这具有允许" "用户在安装后运行测试的额外优势,例如在升级依赖项后检查回归。另一种方法是将测" -"试或测试数据分割成一个单独的Python软件包。加密_项目采取了这种方法,将大型测试" -"向量拆分为加密矢量_包。" +"试或测试数据分割成一个单独的 Python 软件包。加密_项目采取了这种方法,将大型测" +"试向量拆分为加密矢量_包。" #: ../source/discussions/downstream-packaging.rst:132 msgid "" @@ -1191,9 +1193,9 @@ msgid "" "source distribution actually works, and that it won't accidentally install " "fewer files than the official wheels." msgstr "" -"在发布流程中使用源分发是个不错的做法。例如,:ref:`build` " -"工具正是这样操作的——它首先构建源分发,然后用它来构建 wheel " -"包。这能确保源分发实际可用,同时避免意外遗漏官方 wheel 包中的文件。" +"在发布流程中使用源分发是个不错的做法。例如,:ref:`build` 工具正是这样操作的——" +"它首先构建源分发,然后用它来构建 wheel 包。这能确保源分发实际可用,同时避免意" +"外遗漏官方 wheel 包中的文件。" #: ../source/discussions/downstream-packaging.rst:138 msgid "" @@ -1847,7 +1849,7 @@ msgid "" "an sdist and one or more wheel." msgstr "" "在像 PyPI_ 这样的包索引中,你会找到两种格式的文件:**源代码分发包**(简称 " -"**sdists**)和 **二进制分发包**,通常称为 **wheels**。例如,`PyPI 上的 pip " +"**sdists**)和 **二进制分发包**,通常称为 **wheels**。例如,`PyPI 的 pip " "23.3.1 页面 `_ 允许你下载两个文件,``pip-23.3.1.tar.gz`` 和 " "``pip-23.3.1-py3-none-any.whl``。前者是一个 sdist,后者是一个 wheel。如下面所" "解释的,这两者有不同的用途。当在 PyPI(或其他地方)发布包时,你应该始终上传一" @@ -1880,10 +1882,10 @@ msgid "" "(like Linux and macOS), or :ref:`the command line interface of Python's " "tarfile module ` on any platform." msgstr "" -"因此,你可以通过使用标准的工具解压缩 sdist 来检查其内容,这些工具用于处理 " -"tar 归档文件,例如在 UNIX 平台(如 Linux 和 macOS)上使用 ``tar -xvf`` ,或者" -"在任何平台上使用 :ref:`Python tarfile 模块的命令行界面 ` 。" +"因此,你可以使用处理 tar 压缩文件的标准工具解压缩 sdist 来检查其内容,这些工" +"具包括 UNIX 平台上的 ``tar -xvf`` ( Linux 和 macOS 也一样),或者在任何平台" +"上使用 :ref:`the command line interface of Python's tarfile module `。" #: ../source/discussions/package-formats.rst:36 msgid "" @@ -1914,8 +1916,8 @@ msgid "" "If you want technical details on the sdist format, read the :ref:`sdist " "specification `." msgstr "" -"如果您需要有关 sdist 格式的技术细节,请阅读: :ref:`sdist 规范 ` 。" +"如果您需要有关 sdist 格式的技术细节,请阅读::ref:`sdist specification " +"`。" #: ../source/discussions/package-formats.rst:55 msgid "What is a wheel?" @@ -1936,10 +1938,10 @@ msgid "" "files) but compiled, executable code (like ``.so`` files on Linux or DLLs on " "Windows)." msgstr "" -"对于包含 :term:`扩展模块 ` 的包(这些模块用 C、C++ 和 Rust " -"等编译语言编写,需要编译成平台相关的机器代码),sdists 和 wheels 之间存在很大" -"区别。对于这些包,wheels 不包含源代码(如 C 源文件),而是包含已编译的可执行" -"代码(例如 Linux 上的 ``.so`` 文件或 Windows 上的 DLL 文件)。" +"对于包含 :term:`extension modules ` 的包(这些模块用 C、C+" +"+ 和 Rust 等编译语言编写,需要编译成平台相关的机器代码),sdists 和 wheels 之" +"间存在很大区别。对于这些包,wheels 不包含源代码(如 C 源文件),而是包含已编" +"译的可执行代码(例如 Linux 上的 ``.so`` 文件或 Windows 上的 DLL 文件)。" #: ../source/discussions/package-formats.rst:66 msgid "" @@ -1952,7 +1954,7 @@ msgid "" msgstr "" "此外,虽然每个版本的项目只有一个 sdist,但可能有多个 wheels。同样,这在扩展模" "块的上下文中最为相关。扩展模块的编译代码与操作系统和处理器架构相关,通常还与 " -"Python 解释器的版本相关(除非使用 :ref:`Python 稳定 ABI ` )。" #: ../source/discussions/package-formats.rst:72 @@ -2029,8 +2031,9 @@ msgstr "" "在技术层面上,wheel 是一个 ZIP 归档文件(与 sdist 的 TAR 归档文件不同)。你可" "以通过像处理普通 ZIP 归档文件一样解压它来检查其内容,例如,在 Linux 和 macOS " "等 UNIX 平台上使用 ``unzip`` ,在 Windows 上使用 Powershell 的 ``Expand-" -"Archive`` ,或使用 :ref:`Python zipfile 模块的命令行界面 ` 。这对于检查 wheel 是否包含你需要的所有文件非常有用。" +"Archive`` ,或使用 :ref:`the command line interface of Python's zipfile " +"module `。这对于检查 wheel 是否包含你需要的所有文" +"件非常有用。" #: ../source/discussions/package-formats.rst:109 msgid "" @@ -2088,8 +2091,8 @@ msgid "" "All technical details on the wheel format can be found in the :ref:`wheel " "specification `." msgstr "" -"有关 wheel 格式的所有技术细节均可在: :ref:`wheel 规范 ` 中找到。" +"有关 wheel 格式的所有技术细节均可在 :ref:`wheel specification ` 中找到。" #: ../source/discussions/package-formats.rst:138 msgid "What about eggs?" @@ -2121,8 +2124,8 @@ msgid "" "Wheel has an :doc:`official standard specification `. Egg did not." msgstr "" -"Wheel 有一个 :doc:`官方标准规范 `,而 Egg 没有。" +"Wheel 有一个 :doc:`official standard specification `,而 Egg 没有。" #: ../source/discussions/package-formats.rst:152 msgid "" @@ -2152,8 +2155,8 @@ msgid "" "Wheel uses standard :ref:`.dist-info directories `. Egg used ``.egg-info``." msgstr "" -"Wheel 使用标准 :ref:`.dist-info 目录 ` 。Egg 使" -"用 ``.egg-info`` 。" +"Wheel 使用标准 :ref:`.dist-info directories ` 。Egg 使用 ``.egg-info`` 。" #: ../source/discussions/package-formats.rst:164 msgid "" @@ -2161,8 +2164,9 @@ msgid "" "single wheel archive can indicate its compatibility with a number of Python " "language versions and implementations, ABIs, and system architectures." msgstr "" -"Wheel 有一个 :ref:`更丰富的文件命名约定 `。一个单一的 " -"wheel 档案可以表明它与许多 Python 语言版本和实现、ABI 以及系统架构的兼容性。" +"Wheel 有一个 :ref:`richer file naming convention `。一" +"个单一的 wheel 档案可以表明它与许多 Python 语言版本和实现、ABI 以及系统架构的" +"兼容性。" #: ../source/discussions/package-formats.rst:168 msgid "" @@ -2200,8 +2204,9 @@ msgid "" "format, although :ref:`this is not officially supported at this time `." msgstr "" -"在某些情况下,wheels 可以作为可导入的运行时格式使用,尽管 :ref:`目前官方并不" -"支持这种用法 ` 。" +"在某些情况下,wheels 可以作为可导入的运行时格式使用,尽管 :ref:`this is not " +"officially supported at this time `。" #: ../source/discussions/pip-vs-easy-install.rst:6 msgid "pip vs easy_install" @@ -2215,8 +2220,8 @@ msgid "" "Index (PyPI)>` using requirement specifiers, and automatically installing " "dependencies." msgstr "" -":ref:`easy_install `,现在已被弃用`_,作为 :ref:`setuptools` 的" -"一部分于 2004 年发布。当时值得注意的是,使用需求说明符从 :term:`PyPI `,现`已弃用`_,作为 :ref:`setuptools` 的一" +"部分于 2004 年发布。当时值得注意的是,使用需求说明符从 :term:`PyPI ` 安装 :term:`packages `,并自动安" "装依赖项。" @@ -2230,12 +2235,12 @@ msgid "" "introducing the idea of :ref:`Requirements Files `, " "which gave users the power to easily replicate environments." msgstr "" -":ref:`pip` 于 2008 年晚些时候出现,作为 :ref:`easy_install ` 的" -"替代品,尽管仍然主要构建在 :ref:`setuptools` 组件之上。当时值得注意的是*不*将" -"软件包安装为 :term:`Eggs ` 或来自 :term:`Eggs `(而是简单地作为来" -"自 :term:`sdists `),并引入 :ref:" -"`Requirements Files ` 的想法,它使用户能够轻松复制环" -"境。" +":ref:`pip` 作为 :ref:`easy_install ` 的替代品于 2008 年出现,尽" +"管其仍然主要构建在 :ref:`setuptools` 组件之上。当时它引人关注的原因是 *不* 将" +"软件包作为 :term:`Eggs ` 安装或不从 :term:`Eggs ` 安装软件包(只作" +"为来自 :term:`sdists ` 的 'flat' 包进行安" +"装 ),并引入 :ref:`Requirements Files ` 的概念,使用" +"户能够轻松复制环境。" #: ../source/discussions/pip-vs-easy-install.rst:22 msgid "" @@ -2331,7 +2336,7 @@ msgstr "`pylauncher 支持`_" #: ../source/discussions/pip-vs-easy-install.rst:51 msgid "Yes [1]_" -msgstr "有[1]_" +msgstr "有 [1]_" #: ../source/discussions/pip-vs-easy-install.rst:54 msgid ":ref:`Multi-version Installs`" @@ -2495,11 +2500,11 @@ msgid "" "generate only one or the other. Note that the build tool needs to be " "installed separately." msgstr "" -"构建 :term:`源代码分发包 ` 和 :term:" -"`wheels ` 的一种推荐、简单且直接的方法是使用 :ref:`build` 工具,命令如" -"下: ``python -m build``,该命令会触发生成这两种分发格式。如果需要,可以使用 " -"``--sdist`` 和 ``--wheel`` 选项仅生成其中之一。请注意,build 工具需要单独安" -"装。" +"构建 :term:`source distributions ` 和 :" +"term:`wheels ` 的一种推荐、简单且直接的方法是使用 :ref:`build` 工具," +"命令如下: ``python -m build``,该命令会触发生成这两种分发格式。如果需要,可" +"以使用 ``--sdist`` 和 ``--wheel`` 选项仅生成其中之一。请注意,build 工具需要" +"单独安装。" #: ../source/discussions/setup-py-deprecated.rst:80 msgid "" @@ -2555,7 +2560,8 @@ msgid "" "example :ref:`devpi`)." msgstr "" "在 :term:`PyPI ` 上不必要,也不被支持。但在其" -"他 :term:`包索引 ` 上可能是必要的(例如 :ref:`devpi` )。" +"他 :term:`package indexes ` 上可能是必要的(例如 :ref:" +"`devpi` )。" #: ../source/discussions/setup-py-deprecated.rst:112 msgid "``python setup.py --version``" @@ -2744,9 +2750,9 @@ msgid "" "table is to assume that the :term:`build backend ` is " "setuptools." msgstr "" -"在没有 :file:`pyproject.toml` 文件及其 ``[build-system]`` 表的情况下, :term:" -"`构建前端 ` 的标准回退行为是默认假设 :term:`构建后端 ` 是 setuptools。" +"在没有 :file:`pyproject.toml` 文件及其 ``[build-system]`` 表的情况下,:term:" +"`build frontend ` 的标准回退行为是默认假设 :term:`build " +"backend ` 是 setuptools。" #: ../source/discussions/setup-py-deprecated.rst:204 msgid "Why? What does it all mean?" @@ -2795,10 +2801,10 @@ msgid "" "same version specifier as :func:`importlib.metadata.version` reports for the " "distribution package (as described in :ref:`runtime-version-access`)." msgstr "" -"许多 Python :term:`分发包 ` 发布一个单一的 Python :" -"term:`导入包 ` ,在这种情况下,希望导入包上的运行时 " -"``__version__`` 属性报告与 :func:`importlib.metadata.version` 为分发包报告的" -"相同版本说明符(如 :ref:`运行时版本访问 ` 中所述)。" +"许多 Python :term:`distribution packages ` 发布一个单一" +"的 Python :term:`import package ` ,在这种情况下,希望导入包" +"上的运行时 ``__version__`` 属性报告与 :func:`importlib.metadata.version` 为分" +"发包报告的相同版本说明符(如 :ref:`runtime-version-access` 中所述)。" #: ../source/discussions/single-source-version.rst:16 msgid "" @@ -2920,8 +2926,8 @@ msgid "" "repository, such that the various configuration files and :term:`import " "packages ` are all in the top-level directory." msgstr "" -"“平坦布局”指将项目的文件组织在文件夹或存储库中,这样各种配置文件和 :term:`导" -"入包 ` 都在顶级目录中。" +"“平坦布局”指将项目的文件组织在文件夹或存储库中,这样各种配置文件和 :term:" +"`import packages ` 都在顶级目录中。" #: ../source/discussions/src-layout-vs-flat-layout.rst:25 msgid "" @@ -2931,8 +2937,8 @@ msgid "" "subdirectory is typically named ``src/``, hence \"src layout\"." msgstr "" "“src 布局”和平坦布局不同,是将预期可导入的代码 (亦即 ``import " -"awesome_package`` 也称 :term:`导入包 `) 移动至子目录中。该子" -"目录通常名为 ``src/``,因为其被称为“src 布局”。" +"awesome_package`` 也称 :term:`import packages `) 移动至子目录" +"中。该子目录通常名为 ``src/``,因为其被称为“src 布局”。" #: ../source/discussions/src-layout-vs-flat-layout.rst:45 msgid "" @@ -2954,8 +2960,8 @@ msgid "" "regular installation is used for testing)." msgstr "" "这意味着 `src` 布局在项目的开发工作流程中涉及一个额外的步骤(通常,在开发中使" -"用 :doc:`可编辑安装 ` ,在测试中使用常" -"规安装)。" +"用 :doc:`editable installation ` ,在" +"测试中使用常规安装)。" #: ../source/discussions/src-layout-vs-flat-layout.rst:56 msgid "" @@ -2992,7 +2998,7 @@ msgid "" "userguide/development_mode>` is only able to import files that were meant to " "be importable." msgstr "" -"`src` 布局有助于确保 :doc:`可编辑安装 ` 仅能导入那些本应可导入的文件。" #: ../source/discussions/src-layout-vs-flat-layout.rst:74 @@ -3029,14 +3035,14 @@ msgid "" "the package folder to Python's :py:data:`sys.path` when called via its :" "file:`__main__.py` file:" msgstr "" -"由于前述的 `src` 布局的特点,命令行界面不能直接从 :term:`源代码树 ` 运行,而需要将包安装为 :doc:`开发模式 ` 以便进行测试。由于在某些情况下这可能不太实际,一个解决方法" -"是在通过其 :file:`__main__.py` 文件调用时,将包文件夹添加到 Python 的 :py:" -"data:`sys.path` 中:" +"由于前述的 `src` 布局的特点,命令行界面不能直接从 :term:`source tree " +"` 运行,而需要将包安装为 :doc:`Development Mode " +"` 以便进行测试。由于在某些情况下这可能" +"不太实际,一个解决方法是在通过其 :file:`__main__.py` 文件调用时,将包文件夹添" +"加到 Python 的 :py:data:`sys.path` 中:" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 msgid "Versioning" msgstr "版本" @@ -3059,8 +3065,8 @@ msgid "" msgstr "" "不同的 Python 项目可能根据各自的需求使用不同的版本控制方案,但为了与像 :ref:" "`pip` 这样的工具兼容,所有这些项目都需要遵循一个灵活的版本标识符格式,权威参" -"考是 :ref:`版本规范说明 ` 。以下是一些版本号的示例 " -"[#version-examples]_ :" +"考是 :ref:`specification of version specifiers ` 。以下是" +"一些版本号的示例 [#version-examples]_ :" #: ../source/discussions/versioning.rst:21 msgid "A simple version (final release): ``1.2.0``" @@ -3245,12 +3251,12 @@ msgid "" "equivalent to ``name >= X.Y.Z, == X.Y.*``, i.e., it requires at least X.Y.Z " "and allows a later release with same X and Y but higher Z." msgstr "" -"对于那些确实使用严格语义版本控制的项目,这种方法允许用户使用 :ref:`兼容发布版" -"本说明符 ` ,并使用 ``~=`` 运算符。例" -"如, ``name ~= X.Y`` 大致等价于 ``name >= X.Y, == X.*`` ,即它要求至少是 X.Y " -"版本,并允许任何 X 不变且 Y 较大的后续版本。同样, ``name ~= X.Y.Z`` 大致等价" -"于 ``name >= X.Y.Z, == X.Y.*`` ,即要求至少是 X.Y.Z 版本,并允许任何 X 和 Y " -"相同但 Z 较大的后续版本。" +"对于那些确实使用严格语义版本控制的项目,这种方法允许用户使用 :ref:" +"`compatible release version specifiers ` ,并使用 ``~=`` 运算符。例如, ``name ~= X.Y`` 大致等价于 ``name " +">= X.Y, == X.*`` ,即它要求至少是 X.Y 版本,并允许任何 X 不变且 Y 较大的后续" +"版本。同样, ``name ~= X.Y.Z`` 大致等价于 ``name >= X.Y.Z, == X.Y.*`` ,即要" +"求至少是 X.Y.Z 版本,并允许任何 X 和 Y 相同但 Z 较大的后续版本。" #: ../source/discussions/versioning.rst:112 msgid "" @@ -3271,10 +3277,10 @@ msgid "" "`)." msgstr "" "流行的 :doc:`Sphinx ` 文档生成器是一个使用严格语义版本控制的示" -"例项目( :doc:`Sphinx 版本控制政策 ` )。著" -"名的 :doc:`NumPy ` 科学计算包明确使用“宽松”语义版本控制,其中递" -"增次要版本可能包含向后不兼容的 API 更改( :doc:`NumPy 版本控制政策 ` )。" +"例项目( :doc:`Sphinx versioning policy ` )。著名的 :doc:`NumPy ` 科学计算包明确使用“宽松”语义" +"版本控制,其中递增次要版本可能包含向后不兼容的 API 更改( :doc:`NumPy " +"versioning policy ` )。" #: ../source/discussions/versioning.rst:124 msgid "Calendar versioning" @@ -3353,9 +3359,9 @@ msgid "" "publication, or modified variants of a release maintained by a redistributor." msgstr "" "公共版本标识符旨在支持通过 :term:`PyPI ` 进行分" -"发。Python 打包工具还支持 :ref:`本地版本标识符 ` " -"的概念,可以用来标识不打算公开发布的本地开发构建,或由重新分发者维护的已修改" -"版本。" +"发。Python 打包工具还支持 :ref:`local version identifier ` 的概念,可以用来标识不打算公开发布的本地开发构建,或由重新分发" +"者维护的已修改版本。" #: ../source/discussions/versioning.rst:165 msgid "" @@ -3541,7 +3547,7 @@ msgstr "" msgid "" "These last 2 steps are typically performed by :ref:`pip` when an end user " "runs ``pip install``." -msgstr "最后两个步骤通常由 :ref:`pip` 在终端用户运行 ``pip install``时执行。" +msgstr "最后两个步骤通常由 :ref:`pip` 在终端用户运行 ``pip install`` 时执行。" #: ../source/flow.rst:50 msgid "The steps above are described in more detail below." @@ -4049,8 +4055,8 @@ msgid "" "`distributions `." msgstr "" "Python 项目必须具有独特且唯一的名称,这些名字可以在 :term:`PyPI ` 上注册。然后每个项目将包含一个或多个 :term:`发布 " -"` ,每个版本可能包括一个或多个 :term:`套件 ` 上注册。然后每个项目将包含一个或多个 :term:`Releases " +"` ,每个版本可能包括一个或多个 :term:`distributions ` 。" #: ../source/glossary.rst:220 @@ -4174,8 +4180,8 @@ msgid "" "Python community. It is open to all Python developers to consume and " "distribute their distributions." msgstr "" -"`PyPI `_ 是 Python 社区的默认 :term:`包索引 (Package " -"Index) ` 。所有 Python 开发人员都可以使用和分发他们的发行版。" +"`PyPI `_ 是 Python 社区的默认 :term:`Package Index` 。所有 " +"Python 开发人员都可以使用和分发他们的发行版。" #: ../source/glossary.rst:302 msgid "pypi.org" @@ -4253,7 +4259,7 @@ msgid "" "installed using :ref:`pip`. For more information, see the :ref:`pip` docs " "on :ref:`pip:Requirements Files`." msgstr "" -"一个包含 :term:`Requirement ` 列表的文件,这些 Requirments 可以" +"一个包含 :term:`Requirements ` 列表的文件,这些 Requirments 可以" "使用 :ref:`pip` 来安装。更多信息,请参阅 :ref:`pip` 文档的 :ref:`pip:" "Requirements Files` 。" @@ -4483,9 +4489,9 @@ msgid "" "cloud-function/>`__ streams download logs from PyPI to `Google BigQuery`_ " "[#]_, where they are stored as a public dataset." msgstr "" -"作为替代方案,`Linehaul 项目`__ 将下载日志从 PyPI 整合到 `Google BigQuery`_ [#]_ ,在那里它们被存储为一" -"个公共数据集。" +"作为替代方案,`Linehaul project `__ 将下载日志从 PyPI 整合到 `Google BigQuery`_ [#]_ ,在那里它们被" +"存储为一个公共数据集。" #: ../source/guides/analyzing-pypi-package-downloads.rst:49 msgid "Getting set up" @@ -4558,7 +4564,7 @@ msgstr "描述" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "例子" @@ -5110,8 +5116,9 @@ msgid "" "library/importlib.metadata>`, most packaging tools other than setuptools " "provide support for defining entry points." msgstr "" -"由于此规范是 :doc:`标准库的一部分 `,因此" -"除了 setuptools 之外,大多数打包工具都提供了定义 entry points 的支持。" +"由于此规范是 :doc:`standard library ` 的一" +"部分,因此除了 setuptools 之外,大多数打包工具都提供了定义 entry points 的支" +"持。" #: ../source/guides/creating-command-line-tools.rst:5 msgid "Creating and packaging command-line tools" @@ -5126,9 +5133,9 @@ msgid "" "use on the command-line." msgstr "" "本指南将引导您创建和打包一个独立的命令行应用程序,该应用程序可以通过 :ref:" -"`pipx` 安装,pipx 是一个创建和管理 :term:`Python 虚拟环境 ` 的工具,并暴露包的可执行脚本(以及可用的手册页)以供命令行使" -"用。" +"`pipx` 安装,pipx 是一个创建和管理 :term:`Python Virtual Environments " +"` 的工具,并暴露包的可执行脚本(以及可用的手册页)以供命" +"令行使用。" #: ../source/guides/creating-command-line-tools.rst:12 msgid "Creating the package" @@ -5140,8 +5147,8 @@ msgid "" "the sake of an example, we'll build a simple tool outputting a greeting (a " "string) for a person based on arguments given on the command-line." msgstr "" -"首先,创建一个源代码树用于该 :term:`项目 ` 。为了举例说明,我们将构" -"建一个简单的工具,根据命令行提供的参数输出对某个人的问候(一个字符串)。" +"首先,创建一个源代码树用于该 :term:`project ` 。为了举例说明,我们将" +"构建一个简单的工具,根据命令行提供的参数输出对某个人的问候(一个字符串)。" #: ../source/guides/creating-command-line-tools.rst:17 #: ../source/guides/tool-recommendations.rst:45 @@ -5345,7 +5352,8 @@ msgid "" "First, make sure you have already fulfilled the :ref:`requirements for " "installing packages `." msgstr "" -"首先,确保你已经满足了 :ref:`安装软件包的要求 `。" +"首先,确保你已经满足了 :ref:`requirements for installing packages " +"`。" #: ../source/guides/distributing-packages-using-setuptools.rst:32 msgid "Install \"twine\" [1]_:" @@ -5992,7 +6000,8 @@ msgstr "**请注意,这将以明文形式存储你的令牌。**" #: ../source/guides/using-testpypi.rst:84 msgid "" "For more details, see the :ref:`specification ` for :file:`.pypirc`." -msgstr "有关更多详细信息,请参见 :ref:`规格 ` for :file:`.pypirc`。" +msgstr "" +"有关更多详细信息,请参见 :file:`.pypirc` 的 :ref:`specification `。" #: ../source/guides/distributing-packages-using-setuptools.rst:566 msgid "Upload your distributions" @@ -6798,7 +6807,7 @@ msgid "" "safely run the applications from anywhere." msgstr "" ":ref:`pipx` 解决这个问题的办法是为每个软件包创建一个虚拟环境,同时也确保其应" -"用程序可以通过你 ``$PATH``上的目录访问。这允许每个软件包在升级或卸载时不会与" +"用程序可以通过你 `$PATH`` 上的目录访问。这允许每个软件包在升级或卸载时不会与" "其他软件包产生冲突,并允许你在任何地方安全地运行程序。" #: ../source/guides/installing-stand-alone-command-line-tools.rst:23 @@ -6834,7 +6843,7 @@ msgid "" "To see a list of packages installed with pipx and which applications are " "available, use ``pipx list``:" msgstr "" -"要查看用 pipx 安装的软件包列表,以及哪些应用程序可用,请使用``pipx list``:" +"要查看用 pipx 安装的软件包列表,以及哪些应用程序可用,请使用 ``pipx list`` :" #: ../source/guides/installing-stand-alone-command-line-tools.rst:100 msgid "To upgrade or uninstall a package:" @@ -7163,7 +7172,7 @@ msgstr "停用虚拟环境" msgid "" "If you want to switch projects or leave your virtual environment, " "``deactivate`` the environment:" -msgstr "如果要切换项目或离开虚拟环境,请``停用``环境:" +msgstr "如果要切换项目或离开虚拟环境,请 ``停用`` 环境:" #: ../source/guides/installing-using-pip-and-virtual-environments.rst:140 msgid "" @@ -8087,7 +8096,7 @@ msgid "" "user registrations at ``pypi.org`` are open." msgstr "" "为了帮助减轻针对 PyPI 的垃圾邮件攻击,通过 ``pypi.python.org`` 的新用户注册已" -"于 **2018年2月20日** **关闭**。在``pypi.org``的新用户注册是开放的。" +"于 *2018年2月20日* *关闭* 。在``pypi.org``的新用户注册是开放的。" #: ../source/guides/migrating-to-pypi-org.rst:125 msgid "Browsing packages" @@ -9286,9 +9295,9 @@ msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -10739,32 +10748,40 @@ msgid "poetry-core" msgstr "poetry-core" #: ../source/guides/writing-pyproject-toml.rst:317 +msgid "uv-build" +msgstr "uv-build" + +#: ../source/guides/writing-pyproject-toml.rst:318 msgid "1.27.0" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:318 +#: ../source/guides/writing-pyproject-toml.rst:319 msgid "77.0.3" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:319 +#: ../source/guides/writing-pyproject-toml.rst:320 msgid "3.12" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:320 +#: ../source/guides/writing-pyproject-toml.rst:321 msgid "2.4.0" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:321 +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "``license``" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -10773,7 +10790,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10797,77 +10814,77 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "``license-files``" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "``keywords``" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "``classifiers``" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." @@ -10875,7 +10892,7 @@ msgstr "" "应用到你的项目的 PyPI 分类器列表。查看 `full list of possibilities " "`_ 。" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10884,26 +10901,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10911,28 +10928,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10940,33 +10957,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "完整示例" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -11000,7 +11017,7 @@ msgid "" "`. 😊" msgstr "" "本指南在 `GitHub`_ 上由 :doc:`Python Packaging Authority ` 维护。" -"我们很乐意接受任何 :doc:`贡献和反馈 `。 😊" +"我们很乐意接受任何 :doc:`contributions and feedback `。 😊" #: ../source/index.rst:36 msgid "Overview and Flow" @@ -11052,8 +11069,8 @@ msgid "" "A :doc:`tutorial on packaging and distributing ` your project" msgstr "" -"要学习如何打包和分发你的项目,请参阅 :doc:`打包和分发教程 `" +"要学习如何打包和分发你的项目,请参阅 :doc:`tutorial on packaging and " +"distributing `" #: ../source/index.rst:71 msgid "" @@ -11201,7 +11218,7 @@ msgid "" "issues>`__ | `GitHub `__ | `PyPI `__" msgstr "" -":doc:`文档 ` | `Issues ` | `Issues `__ | `GitHub `__ | `PyPI `__" @@ -11323,7 +11340,7 @@ msgid "" "issues>`__ | `GitHub `__ | `PyPI `__" msgstr "" -":doc:`文档` | `Issues ` | `Issues `__ | `GitHub `__ | `PyPI `__" @@ -11394,7 +11411,7 @@ msgid "" "`Issues `__ | `PyPI `__" msgstr "" -":doc:`文档 ` | `源码 `__ | `问" +":doc:`Docs ` | `源码 `__ | `问" "题 `__ | `PyPI `__" @@ -11766,7 +11783,7 @@ msgid "" ":gh:`Source ` | :gh:`Issues ` | `PyPI " "`__" msgstr "" -":gh:`源码 ` | :gh:`问题 ` | `PyPI " +":gh:`Source ` | :gh:`Issues ` | `PyPI " "`__" #: ../source/key_projects.rst:470 @@ -11983,7 +12000,7 @@ msgid "" "`Website `__ | :doc:`Docs ` | " "`GitHub `__" msgstr "" -"`网站 `__ | :doc:`文档 ` | " +"`网站 `__ | :doc:`Docs ` | " "`GitHub `__" #: ../source/key_projects.rst:629 @@ -12115,11 +12132,11 @@ msgid "" "Organizations who use pypiserver usually download packages both from " "pypiserver and from PyPI." msgstr "" -"pypiserver 是一个极简的应用程序,充当组织内的私有 Python :term:`包索引 " -"`(从一个本地目录),实现了一个简单的 API 和浏览器界面。你可以" -"使用标准的上传工具上传私有软件包,用户可以使用 :ref:`pip` 下载和安装它们,而" -"不用公开发布。使用 pypiserver 的组织通常既从 pypiserver 也从 PyPI 下载软件" -"包。" +"pypiserver 是一个极简的应用程序,充当组织内的私有 Python :term:`package " +"index `(从一个本地目录),实现了一个简单的 API 和浏览器界面。" +"你可以使用标准的上传工具上传私有软件包,用户可以使用 :ref:`pip` 下载和安装它" +"们,而不用公开发布。使用 pypiserver 的组织通常既从 pypiserver 也从 PyPI 下载" +"软件包。" #: ../source/key_projects.rst:722 msgid "PyScaffold" @@ -14476,7 +14493,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -14486,7 +14503,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -14579,9 +14596,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "技术参数" @@ -17447,29 +17466,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -18282,6 +18301,133 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +msgid "Installers" +msgstr "安装包" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -18857,7 +19003,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "建议" @@ -19647,10 +19793,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -19813,6 +19959,138 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +msgid "Project Status Markers" +msgstr "项目状态标记" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +msgid "Installer semantics: none." +msgstr "安装包语义:无。" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "``已归档``" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +msgid "Installer semantics:" +msgstr "安装包语义:" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +msgid "``deprecated``" +msgstr "``已启用``" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 msgid "``pylock.toml`` Specification" msgstr "``pylock.toml`` 规范" @@ -20062,6 +20340,7 @@ msgid "``dependency-groups``" msgstr "``dependency-groups``" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "**灵感**: :ref:`pyproject-tool-table`" @@ -20794,8 +21073,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" -msgstr "" +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr "**灵感**: :ref:`provenance-object`" #: ../source/specifications/pylock-toml.rst:676 msgid "" @@ -20809,7 +21088,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -20824,14 +21103,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "``[packages.tool]``" -#: ../source/specifications/pylock-toml.rst:701 -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "**灵感**: :ref:` pyproject-tool-table`" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -22221,6 +22496,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "PyPA 框架" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -22260,433 +22551,425 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 +#: ../source/specifications/simple-repository-api.rst:33 +msgid "Normalized Names" +msgstr "规范化的名称" + +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:48 -msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"In addition to the above, the following constraints are placed on the API:" +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 -msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" #: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" #: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 -msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" #: ../source/specifications/simple-repository-api.rst:103 +msgid "Clients" +msgstr "客户端" + +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 +#: ../source/specifications/simple-repository-api.rst:112 msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" #: ../source/specifications/simple-repository-api.rst:115 msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" +#: ../source/specifications/simple-repository-api.rst:121 +msgid "HTML Serialization" +msgstr "HTML 序列化" + #: ../source/specifications/simple-repository-api.rst:125 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" #: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +msgid "Project List" +msgstr "项目清单" + #: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +msgid "" +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" #: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 -msgid "Normalized Names" -msgstr "规范化的名称" +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 +msgid "Project Detail" +msgstr "项目详情" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:158 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 -msgid "Installers" -msgstr "安装包" - -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:183 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:186 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:202 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." -msgstr "" - -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:211 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:220 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:242 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:245 +msgid "" +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:247 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:253 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:261 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -msgid "Clients" -msgstr "客户端" +#: ../source/specifications/simple-repository-api.rst:272 +msgid "" +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." +msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -22695,7 +22978,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -22707,7 +22990,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -22717,18 +23000,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -22736,11 +23019,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -22748,7 +23031,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -22758,7 +23041,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -22768,7 +23051,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -22776,28 +23059,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -22806,37 +23089,37 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 msgid "JSON Serialization" msgstr "JSON 序列化" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -22844,19 +23127,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -msgid "Project List" -msgstr "项目清单" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "示例:" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -22915,7 +23194,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22976,23 +23277,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -23001,14 +23302,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -23018,7 +23319,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -23026,14 +23327,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -23043,45 +23344,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -23090,35 +23391,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -23127,11 +23427,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -23139,11 +23439,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -23206,11 +23506,11 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 msgid "Version + Format Selection" msgstr "版本+格式选择" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -23219,65 +23519,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -23285,7 +23585,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -23296,7 +23596,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -23305,33 +23605,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "``$type/$subtype``" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "``$type/*``" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "``*/*``" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -23341,7 +23641,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -23351,7 +23651,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -23359,7 +23659,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -23370,22 +23670,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -23394,25 +23694,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -23420,13 +23720,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -23436,18 +23736,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -23455,7 +23755,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -23465,7 +23765,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -23473,11 +23773,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -23488,7 +23788,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -23496,7 +23796,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -23505,7 +23805,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -23513,7 +23813,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -23523,20 +23823,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -23544,7 +23844,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -23553,18 +23853,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -23572,13 +23872,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -23587,23 +23887,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -23612,73 +23912,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -26691,6 +27002,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" @@ -27231,6 +27549,9 @@ msgid "" "the file is empty)." msgstr "" +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr "**灵感**: :ref:` pyproject-tool-table`" + #~ msgid "Signing the distribution packages" #~ msgstr "签署分发包" diff --git a/locales/zh_Hant/LC_MESSAGES/messages.po b/locales/zh_Hant/LC_MESSAGES/messages.po index 361bdee2e..c84141daf 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-06-19 01:36+0000\n" +"POT-Creation-Date: 2025-08-11 12:33+0000\n" "PO-Revision-Date: 2025-02-24 15:37+0000\n" "Last-Translator: toto6038 \n" "Language-Team: Chinese (Traditional Han script) `. You can install or upgrade nox using ``pip``:" msgstr ":doc:`Nox `。您可以使用 ``pip`` 來安裝或升級 nox:" -#: ../source/contribute.rst:137 +#: ../source/contribute.rst:136 #, fuzzy msgid "" "Python 3.11. Our build scripts are usually tested with Python 3.11 only. See " @@ -240,14 +240,14 @@ msgstr "" "Python 3.6。我們的構建腳本只為 Python 3.6 而設計。請參閱 `Hitchhiker's Guide " "to Python installation instructions`_ 以在您的操作系統上安裝Python 3.6。" -#: ../source/contribute.rst:141 +#: ../source/contribute.rst:140 #, fuzzy msgid "" "To build the guide, run the following shell command in the project's root " "folder:" msgstr "要構建指南,請在 source 資料夾中運行以下 bash 命令:" -#: ../source/contribute.rst:147 +#: ../source/contribute.rst:146 msgid "" "After the process has completed you can find the HTML output in the ``./" "build/html`` directory. You can open the ``index.html`` file to view the " @@ -255,32 +255,32 @@ msgid "" "server." msgstr "" -#: ../source/contribute.rst:152 +#: ../source/contribute.rst:151 msgid "" "You can build the guide and serve it via an HTTP server using the following " "command:" msgstr "" -#: ../source/contribute.rst:159 +#: ../source/contribute.rst:158 msgid "The guide will be browsable via http://localhost:8000." msgstr "該指南將可通過 http://localhost:8000 進行瀏覽。" -#: ../source/contribute.rst:163 +#: ../source/contribute.rst:162 msgid "Where the guide is deployed" msgstr "" -#: ../source/contribute.rst:165 +#: ../source/contribute.rst:164 msgid "" "The guide is deployed via ReadTheDocs and the configuration lives at https://" "readthedocs.org/projects/python-packaging-user-guide/. It's served from a " "custom domain and fronted by Fast.ly." msgstr "" -#: ../source/contribute.rst:171 +#: ../source/contribute.rst:170 msgid "Style guide" msgstr "風格指南" -#: ../source/contribute.rst:173 +#: ../source/contribute.rst:172 msgid "" "This style guide has recommendations for how you should write the |PyPUG|. " "Before you start writing, please review it. By following the style guide, " @@ -288,27 +288,27 @@ msgid "" "your contributions to be accepted into the project." msgstr "" -#: ../source/contribute.rst:180 +#: ../source/contribute.rst:179 msgid "Purpose" msgstr "目的" -#: ../source/contribute.rst:182 +#: ../source/contribute.rst:181 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 "" -#: ../source/contribute.rst:187 +#: ../source/contribute.rst:186 msgid "Scope" msgstr "範圍" -#: ../source/contribute.rst:189 +#: ../source/contribute.rst:188 msgid "" "The guide is meant to answer questions and solve problems with accurate and " "focused recommendations." msgstr "該指南旨在通過準確和有針對性的建議回答問題和解決問題。" -#: ../source/contribute.rst:192 +#: ../source/contribute.rst:191 msgid "" "The guide isn't meant to be comprehensive and it's not meant to replace " "individual projects' documentation. For example, pip has dozens of commands, " @@ -317,39 +317,39 @@ msgid "" "complete the specific tasks described in this guide." msgstr "" -#: ../source/contribute.rst:200 +#: ../source/contribute.rst:199 msgid "Audience" msgstr "觀眾" -#: ../source/contribute.rst:202 +#: ../source/contribute.rst:201 msgid "The audience of this guide is anyone who uses Python with packages." msgstr "本指南的受眾是任何使用 Python 包的人。" -#: ../source/contribute.rst:204 +#: ../source/contribute.rst:203 msgid "" "Don't forget that the Python community is big and welcoming. Readers may not " "share your age, gender, education, culture, and more, but they deserve to " "learn about packaging just as much as you do." msgstr "" -#: ../source/contribute.rst:208 +#: ../source/contribute.rst:207 msgid "" "In particular, keep in mind that not all people who use Python see " "themselves as programmers. The audience of this guide includes astronomers " "or painters or students as well as professional software developers." msgstr "" -#: ../source/contribute.rst:214 +#: ../source/contribute.rst:213 msgid "Voice and tone" msgstr "" -#: ../source/contribute.rst:216 +#: ../source/contribute.rst:215 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:219 +#: ../source/contribute.rst:218 msgid "" "Imagine you're working on a Python project with someone you know to be smart " "and skilled. You like working with them and they like working with you. That " @@ -357,7 +357,7 @@ msgid "" "*That* is how you should write this guide." msgstr "" -#: ../source/contribute.rst:224 +#: ../source/contribute.rst:223 msgid "" "Here's a quick check: try reading aloud to get a sense for your writing's " "voice and tone. Does it sound like something you would say or does it sound " @@ -367,7 +367,7 @@ msgid "" "you want to end it with." msgstr "" -#: ../source/contribute.rst:231 +#: ../source/contribute.rst:230 msgid "" "When writing the guide, adjust your tone for the seriousness and difficulty " "of the topic. If you're writing an introductory tutorial, it's OK to make a " @@ -375,15 +375,15 @@ msgid "" "want to avoid jokes altogether." msgstr "" -#: ../source/contribute.rst:238 +#: ../source/contribute.rst:237 msgid "Conventions and mechanics" msgstr "" -#: ../source/contribute.rst:246 +#: ../source/contribute.rst:245 msgid "**Write to the reader**" msgstr "" -#: ../source/contribute.rst:241 +#: ../source/contribute.rst:240 msgid "" "When giving recommendations or steps to take, address the reader as *you* or " "use the imperative mood." @@ -401,11 +401,11 @@ msgstr "" msgid "Right: To install it, run…" msgstr "" -#: ../source/contribute.rst:252 +#: ../source/contribute.rst:251 msgid "**State assumptions**" msgstr "" -#: ../source/contribute.rst:249 +#: ../source/contribute.rst:248 msgid "" "Avoid making unstated assumptions. Reading on the web means that any page of " "the guide may be the first page of the guide that the reader ever sees. If " @@ -413,22 +413,22 @@ msgid "" "going to make." msgstr "" -#: ../source/contribute.rst:257 +#: ../source/contribute.rst:256 msgid "**Cross-reference generously**" msgstr "" -#: ../source/contribute.rst:255 +#: ../source/contribute.rst:254 msgid "" "The first time you mention a tool or practice, link to the part of the guide " "that covers it, or link to a relevant document elsewhere. Save the reader a " "search." msgstr "" -#: ../source/contribute.rst:267 +#: ../source/contribute.rst:266 msgid "**Respect naming practices**" msgstr "" -#: ../source/contribute.rst:260 +#: ../source/contribute.rst:259 msgid "" "When naming tools, sites, people, and other proper nouns, use their " "preferred capitalization." @@ -450,11 +450,11 @@ msgstr "" msgid "Right: …hosted on GitHub." msgstr "" -#: ../source/contribute.rst:276 +#: ../source/contribute.rst:275 msgid "**Use a gender-neutral style**" msgstr "" -#: ../source/contribute.rst:270 +#: ../source/contribute.rst:269 msgid "" "Often, you'll address the reader directly with *you*, *your* and *yours*. " "Otherwise, use gender-neutral pronouns *they*, *their*, and *theirs* or " @@ -473,11 +473,11 @@ msgstr "" msgid "Right: A maintainer uploads the file. Then the maintainer…" msgstr "" -#: ../source/contribute.rst:288 +#: ../source/contribute.rst:287 msgid "**Headings**" msgstr "**標題**" -#: ../source/contribute.rst:279 +#: ../source/contribute.rst:278 msgid "" "Write headings that use words the reader is searching for. A good way to do " "this is to have your heading complete an implied question. For example, a " @@ -485,7 +485,7 @@ msgid "" "might be *Install MyLibrary*." msgstr "" -#: ../source/contribute.rst:284 +#: ../source/contribute.rst:283 msgid "" "In section headings, use sentence case. In other words, write headings as " "you would write a typical sentence." @@ -499,11 +499,11 @@ msgstr "" msgid "Right: Things you should know about Python" msgstr "" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "**Numbers**" msgstr "" -#: ../source/contribute.rst:291 +#: ../source/contribute.rst:290 msgid "" "In body text, write numbers one through nine as words. For other numbers or " "numbers in tables, use numerals." @@ -2632,7 +2632,7 @@ msgid "" msgstr "" #: ../source/discussions/versioning.rst:6 -#: ../source/specifications/simple-repository-api.rst:362 +#: ../source/specifications/simple-repository-api.rst:349 #, fuzzy msgid "Versioning" msgstr "翻譯" @@ -4001,7 +4001,7 @@ msgstr "描述" #: ../source/guides/analyzing-pypi-package-downloads.rst:77 #: ../source/specifications/dependency-groups.rst:23 #: ../source/specifications/dependency-specifiers.rst:29 -#: ../source/specifications/direct-url-data-structure.rst:357 +#: ../source/specifications/direct-url-data-structure.rst:242 #: ../source/specifications/version-specifiers.rst:1072 msgid "Examples" msgstr "例子" @@ -8592,9 +8592,9 @@ msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:78 msgid "" "For security reasons, you must require `manual approval `_ on each run for " -"the ``pypi`` environment." +"com/en/actions/how-tos/managing-workflow-runs-and-deployments/managing-" +"deployments/managing-environments-for-deployment#creating-an-environment>`_ " +"on each run for the ``pypi`` environment." msgstr "" #: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 @@ -10037,32 +10037,42 @@ msgid "poetry-core" msgstr "" #: ../source/guides/writing-pyproject-toml.rst:317 +#, fuzzy +#| msgid "build" +msgid "uv-build" +msgstr "建置" + +#: ../source/guides/writing-pyproject-toml.rst:318 msgid "1.27.0" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:318 +#: ../source/guides/writing-pyproject-toml.rst:319 msgid "77.0.3" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:319 +#: ../source/guides/writing-pyproject-toml.rst:320 msgid "3.12" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:320 +#: ../source/guides/writing-pyproject-toml.rst:321 msgid "2.4.0" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:321 +#: ../source/guides/writing-pyproject-toml.rst:322 msgid "`not yet `_" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:327 +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 #: ../source/specifications/pyproject-toml.rst:140 #: ../source/specifications/pyproject-toml.rst:251 msgid "``license``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/guides/writing-pyproject-toml.rst:331 msgid "" "The new format for ``license`` is a valid :term:`SPDX license expression " "` consisting of one or more :term:`license identifiers " @@ -10071,7 +10081,7 @@ msgid "" "or any later compatible one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:342 +#: ../source/guides/writing-pyproject-toml.rst:344 msgid "" "If you get a build error that ``license`` should be a dict/table, your build " "backend doesn't yet support the new format. See the `above section `__." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:347 +#: ../source/guides/writing-pyproject-toml.rst:349 msgid "" "As a general rule, it is a good idea to use a standard, well-known license, " "both to avoid confusion and because some organizations avoid software whose " "license is unapproved." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:351 +#: ../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-" @@ -10095,83 +10105,83 @@ msgid "" "one." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:365 +#: ../source/guides/writing-pyproject-toml.rst:367 #: ../source/specifications/pyproject-toml.rst:141 #: ../source/specifications/pyproject-toml.rst:281 msgid "``license-files``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:367 +#: ../source/guides/writing-pyproject-toml.rst:369 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:375 +#: ../source/guides/writing-pyproject-toml.rst:377 msgid "The glob patterns must follow the specification:" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:377 +#: ../source/guides/writing-pyproject-toml.rst:379 msgid "" "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots (``." "``) will be matched verbatim." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:379 +#: ../source/guides/writing-pyproject-toml.rst:381 msgid "" "Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " "supported." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:380 +#: ../source/guides/writing-pyproject-toml.rst:382 msgid "Path delimiters must be the forward slash character (``/``)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:381 +#: ../source/guides/writing-pyproject-toml.rst:383 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:383 +#: ../source/guides/writing-pyproject-toml.rst:385 msgid "Parent directory indicators (``..``) must not be used." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:384 +#: ../source/guides/writing-pyproject-toml.rst:386 msgid "Each glob must match at least one file." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:386 +#: ../source/guides/writing-pyproject-toml.rst:388 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:392 +#: ../source/guides/writing-pyproject-toml.rst:394 #: ../source/specifications/pyproject-toml.rst:139 #: ../source/specifications/pyproject-toml.rst:364 msgid "``keywords``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:394 +#: ../source/guides/writing-pyproject-toml.rst:396 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:406 +#: ../source/guides/writing-pyproject-toml.rst:408 #: ../source/specifications/pyproject-toml.rst:133 #: ../source/specifications/pyproject-toml.rst:376 msgid "``classifiers``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:408 +#: ../source/guides/writing-pyproject-toml.rst:410 msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:432 +#: ../source/guides/writing-pyproject-toml.rst:434 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 " @@ -10180,26 +10190,26 @@ msgid "" "python` argument." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:437 +#: ../source/guides/writing-pyproject-toml.rst:439 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:444 +#: ../source/guides/writing-pyproject-toml.rst:446 #: ../source/specifications/pyproject-toml.rst:148 #: ../source/specifications/pyproject-toml.rst:394 msgid "``urls``" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:446 +#: ../source/guides/writing-pyproject-toml.rst:448 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:451 +#: ../source/guides/writing-pyproject-toml.rst:453 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 " @@ -10207,28 +10217,28 @@ msgid "" "URL processing." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:465 +#: ../source/guides/writing-pyproject-toml.rst:467 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:469 +#: ../source/guides/writing-pyproject-toml.rst:471 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:473 +#: ../source/guides/writing-pyproject-toml.rst:475 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:483 +#: ../source/guides/writing-pyproject-toml.rst:485 msgid "" "Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " "equivalents (``homepage`` and ``download``), and can be presented with those " @@ -10236,33 +10246,33 @@ msgid "" "location, respectively)." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:495 +#: ../source/guides/writing-pyproject-toml.rst:497 msgid "Advanced plugins" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:497 +#: ../source/guides/writing-pyproject-toml.rst:499 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:506 +#: ../source/guides/writing-pyproject-toml.rst:508 msgid "See the :ref:`Plugin guide ` for more information." msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:511 +#: ../source/guides/writing-pyproject-toml.rst:513 msgid "A full example" msgstr "" -#: ../source/guides/writing-pyproject-toml.rst:574 +#: ../source/guides/writing-pyproject-toml.rst:576 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:578 +#: ../source/guides/writing-pyproject-toml.rst:580 msgid "" "flit-core `does not yet `_ support WITH in SPDX license " "expressions." @@ -13646,7 +13656,7 @@ msgstr "" #: ../source/specifications/core-metadata.rst:924 #: ../source/specifications/dependency-groups.rst:250 #: ../source/specifications/dependency-specifiers.rst:516 -#: ../source/specifications/direct-url-data-structure.rst:407 +#: ../source/specifications/direct-url-data-structure.rst:292 #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 @@ -13656,7 +13666,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:826 #: ../source/specifications/pyproject-toml.rst:531 #: ../source/specifications/recording-installed-packages.rst:278 -#: ../source/specifications/simple-repository-api.rst:993 +#: ../source/specifications/simple-repository-api.rst:1012 #: ../source/specifications/source-distribution-format.rst:153 #: ../source/specifications/version-specifiers.rst:1269 #: ../source/specifications/virtual-environments.rst:54 @@ -13749,9 +13759,11 @@ msgstr "" #: ../source/specifications/dependency-specifiers.rst:26 #: ../source/specifications/direct-url-data-structure.rst:19 #: ../source/specifications/direct-url.rst:15 +#: ../source/specifications/file-yanking.rst:20 #: ../source/specifications/index-hosted-attestations.rst:17 #: ../source/specifications/inline-script-metadata.rst:13 #: ../source/specifications/license-expression.rst:12 +#: ../source/specifications/project-status-markers.rst:20 msgid "Specification" msgstr "規格" @@ -16646,29 +16658,29 @@ msgid "" "``direct_url.json``:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:359 +#: ../source/specifications/direct-url-data-structure.rst:244 msgid "Source archive:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:372 +#: ../source/specifications/direct-url-data-structure.rst:257 msgid "Git URL with tag and commit-hash:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:385 +#: ../source/specifications/direct-url-data-structure.rst:270 msgid "Local directory:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:394 +#: ../source/specifications/direct-url-data-structure.rst:279 msgid "Local directory in editable mode:" msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:409 +#: ../source/specifications/direct-url-data-structure.rst:294 msgid "" "March 2020: This specification was approved through :pep:`610`, defining the " "``direct_url.json`` metadata file." msgstr "" -#: ../source/specifications/direct-url-data-structure.rst:411 +#: ../source/specifications/direct-url-data-structure.rst:296 msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." @@ -17485,6 +17497,134 @@ msgstr "" msgid "June 2022: This specification was approved through :pep:`668`." msgstr "" +#: ../source/specifications/file-yanking.rst:5 +msgid "File Yanking" +msgstr "" + +#: ../source/specifications/file-yanking.rst:9 +msgid "This specification was originally defined in :pep:`592`." +msgstr "" + +#: ../source/specifications/file-yanking.rst:14 +msgid "" +":pep:`592` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/file-yanking.rst:22 +msgid "" +"Links in the simple repository **MAY** have a ``data-yanked`` attribute " +"which may have no value, or may have an arbitrary string as a value. The " +"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " +"indicating that the file pointed to by this particular link has been " +"\"Yanked\", and should not generally be selected by an installer, except " +"under specific scenarios." +msgstr "" + +#: ../source/specifications/file-yanking.rst:29 +msgid "" +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked. Tools " +"that process the simple repository API **MAY** surface this string to end " +"users." +msgstr "" + +#: ../source/specifications/file-yanking.rst:34 +msgid "" +"The yanked attribute is not immutable once set, and may be rescinded in the " +"future (and once rescinded, may be reset as well). Thus API users **MUST** " +"be able to cope with a yanked file being \"unyanked\" (and even yanked " +"again)." +msgstr "" + +#: ../source/specifications/file-yanking.rst:40 +#, fuzzy +msgid "Installers" +msgstr "安裝軟體套件" + +#: ../source/specifications/file-yanking.rst:42 +msgid "" +"The desirable experience for users is that once a file is yanked, when a " +"human being is currently trying to directly install a yanked file, that it " +"fails as if that file had been deleted. However, when a human did that " +"awhile ago, and now a computer is just continuing to mechanically follow the " +"original order to install the now yanked file, then it acts as if it had not " +"been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:49 +msgid "" +"An installer **MUST** ignore yanked releases, if the selection constraints " +"can be satisfied with a non-yanked version, and **MAY** refuse to use a " +"yanked release even if it means that the request cannot be satisfied at all. " +"An implementation **SHOULD** choose a policy that follows the spirit of the " +"intention above, and that prevents \"new\" dependencies on yanked releases/" +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:56 +msgid "" +"What this means is left up to the specific installer, to decide how to best " +"fit into the overall usage of their installer. However, there are two " +"suggested approaches to take:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:60 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"a version specifier that \"pins\" to an exact version using either ``==`` " +"(without any modifiers that make it a range, such as ``.*``) or ``===``. " +"Matching this version specifier should otherwise be done as per :ref:`the " +"version specifiers specification ` for things like local " +"versions, zero padding, etc." +msgstr "" + +#: ../source/specifications/file-yanking.rst:67 +msgid "" +"Yanked files are always ignored, unless they are the only file that matches " +"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " +"be installed. In this case, a yanked file **SHOULD** not be used when " +"creating or updating a lock file from some input file or command." +msgstr "" + +#: ../source/specifications/file-yanking.rst:73 +msgid "" +"Regardless of the specific strategy that an installer chooses for deciding " +"when to install yanked files, an installer **SHOULD** emit a warning when it " +"does decide to install a yanked file. That warning **MAY** utilize the value " +"of the ``data-yanked`` attribute (if it has a value) to provide more " +"specific feedback to the user about why that file had been yanked." +msgstr "" + +#: ../source/specifications/file-yanking.rst:81 +msgid "Mirrors" +msgstr "" + +#: ../source/specifications/file-yanking.rst:83 +msgid "Mirrors can generally treat yanked files one of two ways:" +msgstr "" + +#: ../source/specifications/file-yanking.rst:85 +msgid "" +"They may choose to omit them from their simple repository API completely, " +"providing a view over the repository that shows only \"active\", unyanked " +"files." +msgstr "" + +#: ../source/specifications/file-yanking.rst:88 +msgid "" +"They may choose to include yanked files, and additionally mirror the ``data-" +"yanked`` attribute as well." +msgstr "" + +#: ../source/specifications/file-yanking.rst:91 +msgid "" +"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" +"yanked`` attribute for it." +msgstr "" + #: ../source/specifications/glob-patterns.rst:3 msgid "``glob`` patterns" msgstr "" @@ -18062,7 +18202,7 @@ msgid "" msgstr "" #: ../source/specifications/inline-script-metadata.rst:205 -#: ../source/specifications/simple-repository-api.rst:935 +#: ../source/specifications/simple-repository-api.rst:954 msgid "Recommendations" msgstr "" @@ -18855,10 +18995,10 @@ msgstr "" msgid "" "To allow for compact filenames of bdists that work with more than one " "compatibility tag triple, each tag in a filename can instead be a '.'-" -"separated, sorted, set of tags. For example, pip, a pure-Python package " -"that is written to run under Python 2 and 3 with the same source code, could " -"distribute a bdist with the tag ``py2.py3-none-any``. The full list of " -"simple tags is::" +"separated, sorted, collection of tags. For example, pip, a pure-Python " +"package that is written to run under Python 2 and 3 with the same source " +"code, could distribute a bdist with the tag ``py2.py3-none-any``. The full " +"list of simple tags is::" msgstr "" #: ../source/specifications/platform-compatibility-tags.rst:364 @@ -19021,6 +19161,145 @@ msgstr "" msgid "March 2024: The tags for Android were approved through :pep:`738`." msgstr "" +#: ../source/specifications/project-status-markers.rst:5 +#, fuzzy +#| msgid "Project name" +msgid "Project Status Markers" +msgstr "專案名稱" + +#: ../source/specifications/project-status-markers.rst:9 +msgid "This specification was originally defined in :pep:`792`." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:14 +msgid "" +":pep:`792` includes changes to the HTML and JSON index APIs. These changes " +"are documented in the :ref:`simple-repository-api` under :ref:`HTML - " +"Project Detail ` and :ref:`JSON - " +"Project Detail `." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:22 +msgid "" +"A project always has exactly one status. If no status is explicitly noted, " +"then the project is considered to be in the ``active`` state." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:25 +msgid "" +"Indices **MAY** implement any subset of the status markers specified, as " +"applicable to their needs." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:28 +msgid "" +"This standard does not prescribe *which* principals (i.e. project " +"maintainers, index administrators, etc.) are allowed to set and unset which " +"statuses." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:32 +msgid "``active``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:34 +msgid "" +"Description: The project is active. This is the default status for a project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:36 +#: ../source/specifications/project-status-markers.rst:49 +#: ../source/specifications/project-status-markers.rst:65 +#: ../source/specifications/project-status-markers.rst:83 +msgid "Index semantics:" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:38 +msgid "" +"The index hosting the project **MUST** allow uploads of new distributions to " +"the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:40 +#: ../source/specifications/project-status-markers.rst:53 +msgid "" +"The index **MUST** offer existing distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:42 +#, fuzzy +#| msgid "Translations" +msgid "Installer semantics: none." +msgstr "翻譯" + +#: ../source/specifications/project-status-markers.rst:45 +msgid "``archived``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:47 +msgid "Description: The project does not expect to be updated in the future." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:51 +#: ../source/specifications/project-status-markers.rst:67 +msgid "" +"The index hosting the project **MUST NOT** allow uploads of new " +"distributions to the project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:55 +#: ../source/specifications/project-status-markers.rst:71 +#: ../source/specifications/project-status-markers.rst:87 +#, fuzzy +msgid "Installer semantics:" +msgstr "安裝軟體套件" + +#: ../source/specifications/project-status-markers.rst:57 +msgid "Installers **MAY** produce warnings about a project's archival." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:60 +msgid "``quarantined``" +msgstr "" + +#: ../source/specifications/project-status-markers.rst:62 +msgid "" +"Description: The project is considered generally unsafe for use, e.g. due to " +"malware." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:69 +msgid "" +"The index **MUST NOT** offer any distributions of the project for download." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:73 +msgid "" +"Installers **MAY** produce warnings about a project's quarantine, although " +"doing so is effectively moot (as the index will not offer any distributions " +"for installation)." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:78 +#, fuzzy +#| msgid "Deprecated" +msgid "``deprecated``" +msgstr "已棄用" + +#: ../source/specifications/project-status-markers.rst:80 +msgid "" +"Description: The project is considered obsolete, and may have been " +"superseded by another project." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:85 +msgid "This status shares the same semantics as ``active``." +msgstr "" + +#: ../source/specifications/project-status-markers.rst:89 +msgid "Installers **MAY** produce warnings about a project's deprecation." +msgstr "" + #: ../source/specifications/pylock-toml.rst:6 #, fuzzy #| msgid "Specification" @@ -19276,6 +19555,7 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 #, fuzzy #| msgid "Project name" @@ -20018,8 +20298,10 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 -msgid "**Inspiration**: :ref:` provenance-object`" -msgstr "" +#, fuzzy +#| msgid "Project name" +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr "專案名稱" #: ../source/specifications/pylock-toml.rst:676 msgid "" @@ -20033,7 +20315,7 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:678 msgid "" "Publisher-specific keys are to be included in the table as-is (i.e. top-" -"level), following the spec at :ref:` index-hosted-attestations`." +"level), following the spec at :ref:`index-hosted-attestations`." msgstr "" #: ../source/specifications/pylock-toml.rst:686 @@ -20048,16 +20330,10 @@ msgstr "" msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:701 -#, fuzzy -#| msgid "Project name" -msgid "**Inspiration**: :ref:` pyproject-tool-table`" -msgstr "專案名稱" - #: ../source/specifications/pylock-toml.rst:702 msgid "" -"Similar usage as that of the :ref:`pylock-tool` table from the :ref:` " -"pyproject-toml-spec`, but at the package version level instead of at the " +"Similar usage as that of the :ref:`pylock-tool` table from the :ref:" +"`pyproject-toml-spec`, but at the package version level instead of at the " "lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" @@ -21450,6 +21726,22 @@ msgid "" "pep:`627`." msgstr "" +#: ../source/specifications/schemas/index.rst:4 +msgid "PyPA schemas" +msgstr "" + +#: ../source/specifications/schemas/index.rst:6 +msgid "`direct_url.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:7 +msgid "`build-details.json `_" +msgstr "" + +#: ../source/specifications/schemas/index.rst:8 +msgid "`pylock.toml `_" +msgstr "" + #: ../source/specifications/section-distribution-formats.rst:3 msgid "Package Distribution File Formats" msgstr "" @@ -21491,437 +21783,433 @@ msgstr "" #: ../source/specifications/simple-repository-api.rst:13 msgid "" "The interface for querying available package versions and retrieving " -"packages from an index server comes in two forms: HTML and JSON." +"packages from an index server comes in two forms: :ref:`HTML ` and :ref:`JSON `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:20 -msgid "Base HTML API" +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:22 +#: ../source/specifications/simple-repository-api.rst:23 msgid "" -"A repository that implements the simple API is defined by its base URL, this " +"A repository that implements the simple API is defined by its base URL. This " "is the top level URL that all additional URLs are below. The API is named " "the \"simple\" repository due to the fact that PyPI's base URL is ``https://" "pypi.org/simple/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:27 +#: ../source/specifications/simple-repository-api.rst:28 msgid "" "All subsequent URLs in this document will be relative to this base URL (so " "given PyPI's URL, a URL of ``/foo/`` would be ``https://pypi.org/simple/foo/" "``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:32 -msgid "" -"Within a repository, the root URL (``/`` for this spec which represents the " -"base URL) **MUST** be a valid HTML5 page with a single anchor element per " -"project in the repository. The text of the anchor tag **MUST** be the name " -"of the project and the href attribute **MUST** link to the URL for that " -"particular project. As an example:" -msgstr "" +#: ../source/specifications/simple-repository-api.rst:33 +#, fuzzy +msgid "Normalized Names" +msgstr "翻譯" -#: ../source/specifications/simple-repository-api.rst:48 +#: ../source/specifications/simple-repository-api.rst:35 msgid "" -"Below the root URL is another URL for each individual project contained " -"within a repository. The format of this URL is ``//`` where the " -"```` is replaced by the normalized name for that project, so a " -"project named \"HolyGrail\" would have a URL like ``/holygrail/``. This URL " -"must respond with a valid HTML5 page with a single anchor element per file " -"for the project. The href attribute **MUST** be a URL that links to the " -"location of the file for download, and the text of the anchor tag **MUST** " -"match the final path component (the filename) of the URL. The URL **SHOULD** " -"include a hash in the form of a URL fragment with the following syntax: " -"``#=``, where ```` is the lowercase name of " -"the hash function (such as ``sha256``) and ```` is the hex " -"encoded digest." +"This spec references the concept of a \"normalized\" project name. As per :" +"ref:`the name normalization specification ` the only " +"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" +"``, and ``_``. The name should be lowercased with all runs of the characters " +"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " +"implemented in Python with the ``re`` module::" msgstr "" -#: ../source/specifications/simple-repository-api.rst:60 -msgid "" -"In addition to the above, the following constraints are placed on the API:" +#: ../source/specifications/simple-repository-api.rst:50 +msgid "Versioning PyPI's Simple API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:62 +#: ../source/specifications/simple-repository-api.rst:52 msgid "" -"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " -"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " -"the end." +"This spec proposes the inclusion of a meta tag on the responses of every " +"successful request to a simple API page, which contains a name attribute of " +"``pypi:repository-version``, and a content that is a :ref:`version " +"specifiers specification ` compatible version number, " +"which is further constrained to ONLY be Major.Minor, and none of the " +"additional features supported by :ref:`the version specifiers specification " +"`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:60 +msgid "This would end up looking like:" msgstr "" #: ../source/specifications/simple-repository-api.rst:66 -msgid "" -"URLs may be either absolute or relative as long as they point to the correct " -"location." +msgid "When interpreting the repository version:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:69 +#: ../source/specifications/simple-repository-api.rst:68 msgid "" -"There are no constraints on where the files must be hosted relative to the " -"repository." +"Incrementing the major version is used to signal a backwards incompatible " +"change such that existing clients would no longer be expected to be able to " +"meaningfully use the API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:72 +#: ../source/specifications/simple-repository-api.rst:71 msgid "" -"There may be any other HTML elements on the API pages as long as the " -"required anchor elements exist." +"Incrementing the minor version is used to signal a backwards compatible " +"change such that existing clients would still be expected to be able to " +"meaningfully use the API." msgstr "" #: ../source/specifications/simple-repository-api.rst:75 msgid "" -"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " -"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " -"NOT** rely on this redirection and **MUST** request the normalized URL." +"It is left up to the discretion of any future specs as to what specifically " +"constitutes a backwards incompatible vs compatible change beyond the broad " +"suggestion that existing clients will be able to \"meaningfully\" continue " +"to use the API, and can include adding, modifying, or removing existing " +"features." msgstr "" -#: ../source/specifications/simple-repository-api.rst:80 +#: ../source/specifications/simple-repository-api.rst:81 msgid "" -"Repositories **SHOULD** choose a hash function from one of the ones " -"guaranteed to be available via the :py:mod:`hashlib` module in the Python " -"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " -"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +"It is expectation of this spec that the major version will never be " +"incremented, and any future major API evolutions would utilize a different " +"mechanism for API evolution. However the major version is included to " +"disambiguate with future versions (e.g. a hypothetical simple api v2 that " +"lived at /v2/, but which would be confusing if the repository-version was " +"set to a version >= 2)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:85 -msgid "" -"If there is a GPG signature for a particular distribution file it **MUST** " -"live alongside that file with the same name with a ``.asc`` appended to it. " -"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " -"associated signature, the signature would be located at ``/packages/" -"HolyGrail-1.0.tar.gz.asc``." +#: ../source/specifications/simple-repository-api.rst:89 +msgid "API Version History" msgstr "" #: ../source/specifications/simple-repository-api.rst:91 msgid "" -"A repository **MAY** include a ``data-core-metadata`` attribute on a file " -"link." +"This section contains only an abbreviated history of changes, as marked by " +"the API version number. For a full history of changes including changes made " +"before API versioning, see :ref:`History `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:94 -msgid "" -"The repository **SHOULD** provide the hash of the Core Metadata file as the " -"``data-core-metadata`` attribute's value using the syntax " -"``=``, where ```` is the lower cased name of " -"the hash function used, and ```` is the hex encoded digest. The " -"repository **MAY** use ``true`` as the attribute's value if a hash is " -"unavailable." +#: ../source/specifications/simple-repository-api.rst:95 +msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:100 +#: ../source/specifications/simple-repository-api.rst:96 msgid "" -"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " -"file link." +"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" +"time`` metadata to the JSON serialization, declared with :pep:`700`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:103 +#: ../source/specifications/simple-repository-api.rst:98 msgid "" -"Index clients **MAY** consume this key if present, as a legacy fallback for " -"``data-core-metadata``." +"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" +"`708`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:108 -msgid "" -"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " -"``data-core-metadata`` with :pep:`714`." +#: ../source/specifications/simple-repository-api.rst:99 +msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:111 -msgid "" -"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " -"with a value of either ``true`` or ``false`` to indicate whether or not " -"there is a GPG signature. Repositories that do this **SHOULD** include it on " -"every link." +#: ../source/specifications/simple-repository-api.rst:100 +msgid "API version 1.4: Added status markers, declared with :pep:`792`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:115 -msgid "" -"A repository **MAY** include a ``data-requires-python`` attribute on a file " -"link. This exposes the :ref:`core-metadata-requires-python` metadata field " -"for the corresponding release. Where this is present, installer tools " -"**SHOULD** ignore the download when installing to a Python version that " -"doesn't satisfy the requirement. For example:" -msgstr "" +#: ../source/specifications/simple-repository-api.rst:103 +#, fuzzy +#| msgid "Contents" +msgid "Clients" +msgstr "内容" -#: ../source/specifications/simple-repository-api.rst:125 +#: ../source/specifications/simple-repository-api.rst:105 msgid "" -"In the attribute value, < and > have to be HTML encoded as ``<`` and " -"``>``, respectively." +"Clients interacting with the simple API **SHOULD** introspect each response " +"for the repository version, and if that data does not exist **MUST** assume " +"that it is version 1.0." msgstr "" -#: ../source/specifications/simple-repository-api.rst:128 +#: ../source/specifications/simple-repository-api.rst:109 msgid "" -"A repository **MAY** include a ``data-provenance`` attribute on a file link. " -"The value of this attribute **MUST** be a fully qualified URL, signaling " -"that the file's provenance can be found at that URL. This URL **MUST** " -"represent a `secure origin `_." +"When encountering a major version greater than expected, clients **MUST** " +"hard fail with an appropriate error message for the user." msgstr "" -#: ../source/specifications/simple-repository-api.rst:135 -msgid "The ``data-provenance`` attribute was added with API version 1.3." +#: ../source/specifications/simple-repository-api.rst:112 +msgid "" +"When encountering a minor version greater than expected, clients **SHOULD** " +"warn users with an appropriate message." msgstr "" -#: ../source/specifications/simple-repository-api.rst:139 +#: ../source/specifications/simple-repository-api.rst:115 msgid "" -"The format of the linked provenance is defined in :ref:`index-hosted-" -"attestations`." +"Clients **MAY** still continue to use feature detection in order to " +"determine what features a repository uses." msgstr "" -#: ../source/specifications/simple-repository-api.rst:142 +#: ../source/specifications/simple-repository-api.rst:121 #, fuzzy -msgid "Normalized Names" +msgid "HTML Serialization" msgstr "翻譯" -#: ../source/specifications/simple-repository-api.rst:144 +#: ../source/specifications/simple-repository-api.rst:125 msgid "" -"This spec references the concept of a \"normalized\" project name. As per :" -"ref:`the name normalization specification ` the only " -"valid characters in a name are the ASCII alphabet, ASCII numbers, ``.``, ``-" -"``, and ``_``. The name should be lowercased with all runs of the characters " -"``.``, ``-``, or ``_`` replaced with a single ``-`` character. This can be " -"implemented in Python with the ``re`` module::" +"The following constraints apply to all HTML serialized responses described " +"in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:159 -msgid "Adding \"Yank\" Support to the Simple API" +#: ../source/specifications/simple-repository-api.rst:128 +msgid "All HTML responses **MUST** be a valid HTML5 document." msgstr "" -#: ../source/specifications/simple-repository-api.rst:161 +#: ../source/specifications/simple-repository-api.rst:129 msgid "" -"Links in the simple repository **MAY** have a ``data-yanked`` attribute " -"which may have no value, or may have an arbitrary string as a value. The " -"presence of a ``data-yanked`` attribute **SHOULD** be interpreted as " -"indicating that the file pointed to by this particular link has been " -"\"Yanked\", and should not generally be selected by an installer, except " -"under specific scenarios." +"HTML responses **MAY** contain one or more ``meta`` tags in the ```` " +"section. The semantics of these tags are defined below." msgstr "" -#: ../source/specifications/simple-repository-api.rst:168 +#: ../source/specifications/simple-repository-api.rst:133 +#: ../source/specifications/simple-repository-api.rst:428 +#, fuzzy +#| msgid "Project name" +msgid "Project List" +msgstr "專案名稱" + +#: ../source/specifications/simple-repository-api.rst:135 msgid "" -"The value of the ``data-yanked`` attribute, if present, is an arbitrary " -"string that represents the reason for why the file has been yanked. Tools " -"that process the simple repository API **MAY** surface this string to end " -"users." +"Within a repository, the root URL (``/`` for this spec which represents the " +"base URL) **MUST** be a valid HTML5 page with a single anchor element per " +"project in the repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:173 +#: ../source/specifications/simple-repository-api.rst:139 msgid "" -"The yanked attribute is not immutable once set, and may be rescinded in the " -"future (and once rescinded, may be reset as well). Thus API users **MUST** " -"be able to cope with a yanked file being \"unyanked\" (and even yanked " -"again)." +"The text of each anchor tag **MUST** be the name of the project and the " +"``href`` attribute **MUST** link to the URL for that particular project. As " +"an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:180 +#: ../source/specifications/simple-repository-api.rst:156 +#: ../source/specifications/simple-repository-api.rst:473 #, fuzzy -msgid "Installers" -msgstr "安裝軟體套件" +#| msgid "Project name" +msgid "Project Detail" +msgstr "專案名稱" -#: ../source/specifications/simple-repository-api.rst:182 +#: ../source/specifications/simple-repository-api.rst:158 msgid "" -"The desirable experience for users is that once a file is yanked, when a " -"human being is currently trying to directly install a yanked file, that it " -"fails as if that file had been deleted. However, when a human did that " -"awhile ago, and now a computer is just continuing to mechanically follow the " -"original order to install the now yanked file, then it acts as if it had not " -"been yanked." +"Below the root URL is another URL for each individual project contained " +"within a repository. The format of this URL is ``//``, where the " +"```` is replaced by the normalized name for that project." msgstr "" -#: ../source/specifications/simple-repository-api.rst:189 +#: ../source/specifications/simple-repository-api.rst:164 msgid "" -"An installer **MUST** ignore yanked releases, if the selection constraints " -"can be satisfied with a non-yanked version, and **MAY** refuse to use a " -"yanked release even if it means that the request cannot be satisfied at all. " -"An implementation **SHOULD** choose a policy that follows the spirit of the " -"intention above, and that prevents \"new\" dependencies on yanked releases/" -"files." +"For example, a project named \"HolyGrail\" would have a URL like ``/" +"holygrail/``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:196 +#: ../source/specifications/simple-repository-api.rst:167 msgid "" -"What this means is left up to the specific installer, to decide how to best " -"fit into the overall usage of their installer. However, there are two " -"suggested approaches to take:" +"The project detail URL must respond with a valid HTML5 page with a single " +"anchor element per file for the project. The ``href`` attribute **MUST** be " +"a URL that links to the location of the file for download, and the text of " +"the anchor tag **MUST** match the final path component (the filename) of the " +"URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:200 +#: ../source/specifications/simple-repository-api.rst:172 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"a version specifier that \"pins\" to an exact version using either ``==`` " -"(without any modifiers that make it a range, such as ``.*``) or ``===``. " -"Matching this version specifier should otherwise be done as per :ref:`the " -"version specifiers specification ` for things like local " -"versions, zero padding, etc." +"Each file URL **SHOULD** include a hash in the form of a URL fragment with " +"the following syntax: ``#=``, where ```` is " +"the lowercase name of the hash function (such as ``sha256``) and " +"```` is the hex encoded digest." msgstr "" -#: ../source/specifications/simple-repository-api.rst:207 +#: ../source/specifications/simple-repository-api.rst:177 msgid "" -"Yanked files are always ignored, unless they are the only file that matches " -"what a lock file (such as ``Pipfile.lock`` or ``poetry.lock``) specifies to " -"be installed. In this case, a yanked file **SHOULD** not be used when " -"creating or updating a lock file from some input file or command." +"In addition to the above, the following constraints are placed on the API:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:213 +#: ../source/specifications/simple-repository-api.rst:179 msgid "" -"Regardless of the specific strategy that an installer chooses for deciding " -"when to install yanked files, an installer **SHOULD** emit a warning when it " -"does decide to install a yanked file. That warning **MAY** utilize the value " -"of the ``data-yanked`` attribute (if it has a value) to provide more " -"specific feedback to the user about why that file had been yanked." +"All URLs which respond with an HTML5 page **MUST** end with a ``/`` and the " +"repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " +"the end." msgstr "" -#: ../source/specifications/simple-repository-api.rst:221 -msgid "Mirrors" +#: ../source/specifications/simple-repository-api.rst:183 +msgid "" +"URLs may be either absolute or relative as long as they point to the correct " +"location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:223 -msgid "Mirrors can generally treat yanked files one of two ways:" +#: ../source/specifications/simple-repository-api.rst:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." msgstr "" -#: ../source/specifications/simple-repository-api.rst:225 +#: ../source/specifications/simple-repository-api.rst:189 msgid "" -"They may choose to omit them from their simple repository API completely, " -"providing a view over the repository that shows only \"active\", unyanked " -"files." +"There may be any other HTML elements on the API pages as long as the " +"required anchor elements exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:228 +#: ../source/specifications/simple-repository-api.rst:192 msgid "" -"They may choose to include yanked files, and additionally mirror the ``data-" -"yanked`` attribute as well." +"Repositories **MAY** redirect unnormalized URLs to the canonical normalized " +"URL (e.g. ``/Foobar/`` may redirect to ``/foobar/``), however clients **MUST " +"NOT** rely on this redirection and **MUST** request the normalized URL." msgstr "" -#: ../source/specifications/simple-repository-api.rst:231 +#: ../source/specifications/simple-repository-api.rst:197 msgid "" -"Mirrors **MUST NOT** mirror a yanked file without also mirroring the ``data-" -"yanked`` attribute for it." +"Repositories **SHOULD** choose a hash function from one of the ones " +"guaranteed to be available via the :py:mod:`hashlib` module in the Python " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:237 -msgid "Versioning PyPI's Simple API" +#: ../source/specifications/simple-repository-api.rst:202 +msgid "" +"If there is a GPG signature for a particular distribution file it **MUST** " +"live alongside that file with the same name with a ``.asc`` appended to it. " +"So if the file ``/packages/HolyGrail-1.0.tar.gz`` existed and had an " +"associated signature, the signature would be located at ``/packages/" +"HolyGrail-1.0.tar.gz.asc``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:239 +#: ../source/specifications/simple-repository-api.rst:208 msgid "" -"This spec proposes the inclusion of a meta tag on the responses of every " -"successful request to a simple API page, which contains a name attribute of " -"``pypi:repository-version``, and a content that is a :ref:`version " -"specifiers specification ` compatible version number, " -"which is further constrained to ONLY be Major.Minor, and none of the " -"additional features supported by :ref:`the version specifiers specification " -"`." +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:247 -msgid "This would end up looking like:" +#: ../source/specifications/simple-repository-api.rst:211 +msgid "" +"The repository **SHOULD** provide the hash of the Core Metadata file as the " +"``data-core-metadata`` attribute's value using the syntax " +"``=``, where ```` is the lower cased name of " +"the hash function used, and ```` is the hex encoded digest. The " +"repository **MAY** use ``true`` as the attribute's value if a hash is " +"unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:253 -msgid "When interpreting the repository version:" +#: ../source/specifications/simple-repository-api.rst:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:255 +#: ../source/specifications/simple-repository-api.rst:220 msgid "" -"Incrementing the major version is used to signal a backwards incompatible " -"change such that existing clients would no longer be expected to be able to " -"meaningfully use the API." +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``data-core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:225 msgid "" -"Incrementing the minor version is used to signal a backwards compatible " -"change such that existing clients would still be expected to be able to " -"meaningfully use the API." +"``data-dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``data-core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:262 +#: ../source/specifications/simple-repository-api.rst:228 msgid "" -"It is left up to the discretion of any future specs as to what specifically " -"constitutes a backwards incompatible vs compatible change beyond the broad " -"suggestion that existing clients will be able to \"meaningfully\" continue " -"to use the API, and can include adding, modifying, or removing existing " -"features." +"A repository **MAY** include a ``data-gpg-sig`` attribute on a file link " +"with a value of either ``true`` or ``false`` to indicate whether or not " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:268 +#: ../source/specifications/simple-repository-api.rst:232 msgid "" -"It is expectation of this spec that the major version will never be " -"incremented, and any future major API evolutions would utilize a different " -"mechanism for API evolution. However the major version is included to " -"disambiguate with future versions (e.g. a hypothetical simple api v2 that " -"lived at /v2/, but which would be confusing if the repository-version was " -"set to a version >= 2)." +"A repository **MAY** include a ``data-requires-python`` attribute on a file " +"link. This exposes the :ref:`core-metadata-requires-python` metadata field " +"for the corresponding release. Where this is present, installer tools " +"**SHOULD** ignore the download when installing to a Python version that " +"doesn't satisfy the requirement. For example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:276 -msgid "API Version History" +#: ../source/specifications/simple-repository-api.rst:242 +msgid "" +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." msgstr "" -#: ../source/specifications/simple-repository-api.rst:278 +#: ../source/specifications/simple-repository-api.rst:245 msgid "" -"This section contains only an abbreviated history of changes, as marked by " -"the API version number. For a full history of changes including changes made " -"before API versioning, see :ref:`History `." +"A repository **MAY** include a ``data-yanked`` attribute on a file link." msgstr "" -#: ../source/specifications/simple-repository-api.rst:282 -msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." +#: ../source/specifications/simple-repository-api.rst:247 +msgid "" +"The ``data-yanked`` attribute may have no value, or may have an arbitrary " +"string as a value. The presence of a ``data-yanked`` attribute **SHOULD** be " +"interpreted as indicating that the file pointed to by this particular link " +"has been \"Yanked\", and should not generally be selected by an installer, " +"except under specific scenarios." msgstr "" -#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:253 msgid "" -"API version 1.1: Added ``versions``, ``files[].size``, and ``files[].upload-" -"time`` metadata to the JSON serialization, declared with :pep:`700`." +"The value of the ``data-yanked`` attribute, if present, is an arbitrary " +"string that represents the reason for why the file has been yanked." msgstr "" -#: ../source/specifications/simple-repository-api.rst:285 +#: ../source/specifications/simple-repository-api.rst:258 +#: ../source/specifications/simple-repository-api.rst:601 msgid "" -"API version 1.2: Added repository \"tracks\" metadata, declared with :pep:" -"`708`." +"The semantics of how tools should handle yanked files is described in :ref:" +"`file-yanking`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:286 -msgid "API version 1.3: Added provenance metadata, declared with :pep:`740`." +#: ../source/specifications/simple-repository-api.rst:261 +msgid "" +"A repository **MAY** include a ``data-provenance`` attribute on a file link. " +"The value of this attribute **MUST** be a fully qualified URL, signaling " +"that the file's provenance can be found at that URL. This URL **MUST** " +"represent a `secure origin `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:289 -#, fuzzy -#| msgid "Contents" -msgid "Clients" -msgstr "内容" +#: ../source/specifications/simple-repository-api.rst:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." +msgstr "" -#: ../source/specifications/simple-repository-api.rst:291 +#: ../source/specifications/simple-repository-api.rst:272 msgid "" -"Clients interacting with the simple API **SHOULD** introspect each response " -"for the repository version, and if that data does not exist **MUST** assume " -"that it is version 1.0." +"The format of the linked provenance is defined in :ref:`index-hosted-" +"attestations`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:295 +#: ../source/specifications/simple-repository-api.rst:274 msgid "" -"When encountering a major version greater than expected, clients **MUST** " -"hard fail with an appropriate error message for the user." +"A repository **MAY** include ``pypi:project-status`` and ``pypi:project-" +"status-reason`` meta tags on the response itself." msgstr "" -#: ../source/specifications/simple-repository-api.rst:298 +#: ../source/specifications/simple-repository-api.rst:277 msgid "" -"When encountering a minor version greater than expected, clients **SHOULD** " -"warn users with an appropriate message." +"The value of ``pypi:project-status`` **MUST** be a valid project status " +"marker, while the value of ``pypi:project-status-reason`` **MUST** be an " +"arbitrary string if present." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:283 +#: ../source/specifications/simple-repository-api.rst:493 +msgid "" +"The set of valid project status markers and their semantics is described in :" +"ref:`project-status-markers`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:301 +#: ../source/specifications/simple-repository-api.rst:288 msgid "" -"Clients **MAY** still continue to use feature detection in order to " -"determine what features a repository uses." +"The ``pypi:project-status`` and ``pypi:project-status-reason`` meta tags " +"were added with API version 1.4." msgstr "" -#: ../source/specifications/simple-repository-api.rst:307 +#: ../source/specifications/simple-repository-api.rst:294 msgid "Serve Distribution Metadata in the Simple Repository API" msgstr "" -#: ../source/specifications/simple-repository-api.rst:309 +#: ../source/specifications/simple-repository-api.rst:296 msgid "" "In a simple repository's project page, each anchor tag pointing to a " "distribution **MAY** have a ``data-dist-info-metadata`` attribute. The " @@ -21930,7 +22218,7 @@ msgid "" "when the distribution is processed and/or installed." msgstr "" -#: ../source/specifications/simple-repository-api.rst:315 +#: ../source/specifications/simple-repository-api.rst:302 msgid "" "If a ``data-dist-info-metadata`` attribute is present, the repository " "**MUST** serve the distribution's Core Metadata file alongside the " @@ -21942,7 +22230,7 @@ msgid "" "GPG signature file's location." msgstr "" -#: ../source/specifications/simple-repository-api.rst:324 +#: ../source/specifications/simple-repository-api.rst:311 msgid "" "The repository **SHOULD** provide the hash of the Core Metadata file as the " "``data-dist-info-metadata`` attribute's value using the syntax " @@ -21952,18 +22240,18 @@ msgid "" "unavailable." msgstr "" -#: ../source/specifications/simple-repository-api.rst:332 +#: ../source/specifications/simple-repository-api.rst:319 msgid "Backwards Compatibility" msgstr "" -#: ../source/specifications/simple-repository-api.rst:334 +#: ../source/specifications/simple-repository-api.rst:321 msgid "" "If an anchor tag lacks the ``data-dist-info-metadata`` attribute, tools are " "expected to revert to their current behaviour of downloading the " "distribution to inspect the metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:338 +#: ../source/specifications/simple-repository-api.rst:325 msgid "" "Older tools not supporting the new ``data-dist-info-metadata`` attribute are " "expected to ignore the attribute and maintain their current behaviour of " @@ -21971,11 +22259,11 @@ msgid "" "prior ``data-`` attribute additions expect existing tools to operate." msgstr "" -#: ../source/specifications/simple-repository-api.rst:347 +#: ../source/specifications/simple-repository-api.rst:334 msgid "JSON-based Simple API for Python Package Indexes" msgstr "" -#: ../source/specifications/simple-repository-api.rst:349 +#: ../source/specifications/simple-repository-api.rst:336 msgid "" "To enable response parsing with only the standard library, this spec " "specifies that all responses (besides the files themselves, and the HTML " @@ -21983,7 +22271,7 @@ msgid "" "base>`) should be serialized using `JSON `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:354 +#: ../source/specifications/simple-repository-api.rst:341 msgid "" "To enable zero configuration discovery and to minimize the amount of " "additional HTTP requests, this spec extends :ref:`the base HTML API " @@ -21993,7 +22281,7 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:364 +#: ../source/specifications/simple-repository-api.rst:351 msgid "" "Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " @@ -22003,7 +22291,7 @@ msgid "" "``1.0`` version, and instead just describes how to serialize that into JSON." msgstr "" -#: ../source/specifications/simple-repository-api.rst:371 +#: ../source/specifications/simple-repository-api.rst:358 msgid "" "Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " @@ -22011,28 +22299,28 @@ msgid "" "existing clients to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:377 +#: ../source/specifications/simple-repository-api.rst:364 msgid "" "Likewise, the minor version **MUST** be incremented if features are added or " "removed from the format, but existing clients would be expected to continue " "to meaningfully understand the format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:381 +#: ../source/specifications/simple-repository-api.rst:368 msgid "" "Changes that would not result in existing clients being unable to " "meaningfully understand the format and which do not represent features being " "added or removed may occur without changing the version number." msgstr "" -#: ../source/specifications/simple-repository-api.rst:385 +#: ../source/specifications/simple-repository-api.rst:372 msgid "" "This is intentionally vague, as this spec believes it is best left up to " "future specs that make any changes to the API to investigate and decide " "whether or not that change should increment the major or minor version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:389 +#: ../source/specifications/simple-repository-api.rst:376 msgid "" "Future versions of the API may add things that can only be represented in a " "subset of the available serializations of that version. All serializations " @@ -22041,38 +22329,38 @@ msgid "" "whether or not that feature is present at all." msgstr "" -#: ../source/specifications/simple-repository-api.rst:395 +#: ../source/specifications/simple-repository-api.rst:382 msgid "" "It is the intent of this spec that the API should be thought of as URL " "endpoints that return data, whose interpretation is defined by the version " "of that data, and then serialized into the target serialization format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:403 +#: ../source/specifications/simple-repository-api.rst:390 #, fuzzy msgid "JSON Serialization" msgstr "翻譯" -#: ../source/specifications/simple-repository-api.rst:405 +#: ../source/specifications/simple-repository-api.rst:392 msgid "" "The URL structure from :ref:`the base HTML API specification ` still applies, as this spec only adds an additional " -"serialization format for the already existing API." +"repository-html-serialization>` still applies, as this spec only adds an " +"additional serialization format for the already existing API." msgstr "" -#: ../source/specifications/simple-repository-api.rst:409 +#: ../source/specifications/simple-repository-api.rst:396 msgid "" "The following constraints apply to all JSON serialized responses described " "in this spec:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:412 +#: ../source/specifications/simple-repository-api.rst:399 msgid "" "All JSON responses will *always* be a JSON object rather than an array or " "other type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:415 +#: ../source/specifications/simple-repository-api.rst:402 msgid "" "While JSON doesn't natively support a URL type, any value that represents an " "URL in this API may be either absolute or relative as long as they point to " @@ -22080,19 +22368,19 @@ msgid "" "if it were HTML." msgstr "" -#: ../source/specifications/simple-repository-api.rst:420 +#: ../source/specifications/simple-repository-api.rst:407 msgid "" "Additional keys may be added to any dictionary objects in the API responses " "and clients **MUST** ignore keys that they don't understand." msgstr "" -#: ../source/specifications/simple-repository-api.rst:423 +#: ../source/specifications/simple-repository-api.rst:410 msgid "" "All JSON responses will have a ``meta`` key, which contains information " "related to the response itself, rather than the content of the response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:426 +#: ../source/specifications/simple-repository-api.rst:413 msgid "" "All JSON responses will have a ``meta.api-version`` key, which will be a " "string that contains the :ref:`API versioning specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:432 +#: ../source/specifications/simple-repository-api.rst:419 msgid "" "All requirements of :ref:`the base HTML API specification ` that are not HTML specific still apply." msgstr "" -#: ../source/specifications/simple-repository-api.rst:435 +#: ../source/specifications/simple-repository-api.rst:422 msgid "" "Keys (at any level) with a leading underscore are reserved as private for " "index server use. No future standard will assign a meaning to any such key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:439 -#, fuzzy -#| msgid "Project name" -msgid "Project List" -msgstr "專案名稱" - -#: ../source/specifications/simple-repository-api.rst:441 +#: ../source/specifications/simple-repository-api.rst:430 msgid "" "The root URL ``/`` for this spec (which represents the base URL) will be a " "JSON encoded dictionary which has a two keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:444 +#: ../source/specifications/simple-repository-api.rst:433 msgid "" "``projects``: An array where each entry is a dictionary with a single key, " "``name``, which represents string of the project name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:445 -#: ../source/specifications/simple-repository-api.rst:494 +#: ../source/specifications/simple-repository-api.rst:434 +#: ../source/specifications/simple-repository-api.rst:484 msgid "" "``meta``: The general response metadata as `described earlier `__." msgstr "" -#: ../source/specifications/simple-repository-api.rst:447 -#: ../source/specifications/simple-repository-api.rst:615 +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:632 msgid "As an example:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:464 +#: ../source/specifications/simple-repository-api.rst:453 msgid "" "The ``name`` field is the same as the one from :ref:`the base HTML API " "specification `, which does not specify whether " @@ -22153,7 +22435,7 @@ msgid "" "implementation detail of the repository in question." msgstr "" -#: ../source/specifications/simple-repository-api.rst:474 +#: ../source/specifications/simple-repository-api.rst:463 msgid "" "While the ``projects`` key is an array, and thus is required to be in some " "kind of an order, neither :ref:`the base HTML API specification /`` where the ```` is " "replaced by the :ref:`the base HTML API specification `, version " @@ -22216,23 +22518,23 @@ msgid "" "**SHOULD** use normalized VSS versions where possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:517 +#: ../source/specifications/simple-repository-api.rst:529 msgid "The ``versions`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:519 +#: ../source/specifications/simple-repository-api.rst:531 msgid "Each individual file dictionary has the following keys:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:521 +#: ../source/specifications/simple-repository-api.rst:533 msgid "``filename``: The filename that is being represented." msgstr "" -#: ../source/specifications/simple-repository-api.rst:522 +#: ../source/specifications/simple-repository-api.rst:534 msgid "``url``: The URL that the file can be fetched from." msgstr "" -#: ../source/specifications/simple-repository-api.rst:523 +#: ../source/specifications/simple-repository-api.rst:535 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 " @@ -22241,14 +22543,14 @@ msgid "" "to be lowercase." msgstr "" -#: ../source/specifications/simple-repository-api.rst:528 +#: ../source/specifications/simple-repository-api.rst:540 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:532 +#: ../source/specifications/simple-repository-api.rst:544 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 " @@ -22258,7 +22560,7 @@ msgid "" "specifically is recommended." msgstr "" -#: ../source/specifications/simple-repository-api.rst:537 +#: ../source/specifications/simple-repository-api.rst:549 msgid "" "``requires-python``: An **optional** key that exposes the :ref:`core-" "metadata-requires-python` metadata field. Where this is present, installer " @@ -22266,14 +22568,14 @@ msgid "" "that doesn't satisfy the requirement." msgstr "" -#: ../source/specifications/simple-repository-api.rst:543 +#: ../source/specifications/simple-repository-api.rst:555 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:546 +#: ../source/specifications/simple-repository-api.rst:558 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 " @@ -22283,45 +22585,45 @@ msgid "" "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -#: ../source/specifications/simple-repository-api.rst:554 +#: ../source/specifications/simple-repository-api.rst:566 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:558 +#: ../source/specifications/simple-repository-api.rst:570 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:562 +#: ../source/specifications/simple-repository-api.rst:574 msgid "" "It is recommended that servers make the hashes of the metadata file " "available if possible." msgstr "" -#: ../source/specifications/simple-repository-api.rst:565 +#: ../source/specifications/simple-repository-api.rst:577 msgid "" "``dist-info-metadata``: An **optional**, deprecated alias for ``core-" "metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:567 +#: ../source/specifications/simple-repository-api.rst:579 msgid "" "Index clients **MAY** consume this key if present, as a legacy fallback for " "``core-metadata``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:572 +#: ../source/specifications/simple-repository-api.rst:584 msgid "" "``dist-info-metadata`` was standardized with :pep:`658` and renamed to " "``core-metadata`` with :pep:`714`." msgstr "" -#: ../source/specifications/simple-repository-api.rst:575 +#: ../source/specifications/simple-repository-api.rst:587 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 " @@ -22330,35 +22632,34 @@ msgid "" "the signature may or may not exist." msgstr "" -#: ../source/specifications/simple-repository-api.rst:581 +#: ../source/specifications/simple-repository-api.rst:593 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 " "indicate that a file has been yanked with a specific reason. If the " "``yanked`` key is present and is a truthy value, then it **SHOULD** be " "interpreted as indicating that the file pointed to by the ``url`` field has " -"been \"Yanked\" as per :ref:`the API yank specification `." +"been \"Yanked\"." msgstr "" -#: ../source/specifications/simple-repository-api.rst:587 +#: ../source/specifications/simple-repository-api.rst:604 msgid "" "``size``: A **mandatory** key. It **MUST** contain an integer which is the " "file size in bytes." msgstr "" -#: ../source/specifications/simple-repository-api.rst:591 +#: ../source/specifications/simple-repository-api.rst:608 msgid "The ``size`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:593 +#: ../source/specifications/simple-repository-api.rst:610 msgid "" "``upload-time``: An **optional** key that, if present, **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." msgstr "" -#: ../source/specifications/simple-repository-api.rst:597 +#: ../source/specifications/simple-repository-api.rst:614 msgid "" "As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " "timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " @@ -22367,11 +22668,11 @@ msgid "" "omit the ``upload-time`` key." msgstr "" -#: ../source/specifications/simple-repository-api.rst:604 +#: ../source/specifications/simple-repository-api.rst:621 msgid "The ``upload-time`` key was added with API version 1.1." msgstr "" -#: ../source/specifications/simple-repository-api.rst:606 +#: ../source/specifications/simple-repository-api.rst:623 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 " @@ -22379,11 +22680,11 @@ msgid "" "ref:`base HTML API specification `." msgstr "" -#: ../source/specifications/simple-repository-api.rst:613 +#: ../source/specifications/simple-repository-api.rst:630 msgid "The ``provenance`` field was added with API version 1.3." msgstr "" -#: ../source/specifications/simple-repository-api.rst:649 +#: ../source/specifications/simple-repository-api.rst:668 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 " @@ -22448,12 +22749,12 @@ msgid "" "alias for the ``application/vnd.pypi.simple.v1+html`` content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:692 +#: ../source/specifications/simple-repository-api.rst:711 #, fuzzy msgid "Version + Format Selection" msgstr "翻譯" -#: ../source/specifications/simple-repository-api.rst:694 +#: ../source/specifications/simple-repository-api.rst:713 msgid "" "Now that there is multiple possible serializations, we need a mechanism to " "allow clients to indicate what serialization formats they're able to " @@ -22462,65 +22763,65 @@ msgid "" "expecting the previous API version." msgstr "" -#: ../source/specifications/simple-repository-api.rst:699 +#: ../source/specifications/simple-repository-api.rst:718 msgid "" "To enable this, this spec standardizes on the use of HTTP's `Server-Driven " "Content Negotiation `_." msgstr "" -#: ../source/specifications/simple-repository-api.rst:702 +#: ../source/specifications/simple-repository-api.rst:721 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:705 +#: ../source/specifications/simple-repository-api.rst:724 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:707 +#: ../source/specifications/simple-repository-api.rst:726 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:710 +#: ../source/specifications/simple-repository-api.rst:729 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:714 +#: ../source/specifications/simple-repository-api.rst:733 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:716 +#: ../source/specifications/simple-repository-api.rst:735 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:719 +#: ../source/specifications/simple-repository-api.rst:738 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:721 +#: ../source/specifications/simple-repository-api.rst:740 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:724 +#: ../source/specifications/simple-repository-api.rst:743 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** " @@ -22528,7 +22829,7 @@ msgid "" "the most sense for that client." msgstr "" -#: ../source/specifications/simple-repository-api.rst:729 +#: ../source/specifications/simple-repository-api.rst:748 msgid "" "However, as there is no standard format for how a ``300 Multiple Choices`` " "response can be interpreted, this spec highly discourages servers from " @@ -22539,7 +22840,7 @@ msgid "" "error." msgstr "" -#: ../source/specifications/simple-repository-api.rst:736 +#: ../source/specifications/simple-repository-api.rst:755 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 " @@ -22548,33 +22849,33 @@ msgid "" "have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:743 +#: ../source/specifications/simple-repository-api.rst:762 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:747 +#: ../source/specifications/simple-repository-api.rst:766 msgid "``$type/$subtype``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:748 +#: ../source/specifications/simple-repository-api.rst:767 msgid "``$type/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:749 +#: ../source/specifications/simple-repository-api.rst:768 msgid "``*/*``" msgstr "" -#: ../source/specifications/simple-repository-api.rst:751 +#: ../source/specifications/simple-repository-api.rst:770 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:755 +#: ../source/specifications/simple-repository-api.rst:774 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 " @@ -22584,7 +22885,7 @@ msgid "" "Quality_values>`_ syntax." msgstr "" -#: ../source/specifications/simple-repository-api.rst:762 +#: ../source/specifications/simple-repository-api.rst:781 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`` " @@ -22594,7 +22895,7 @@ msgid "" "quality of ``1``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:768 +#: ../source/specifications/simple-repository-api.rst:787 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 " @@ -22602,7 +22903,7 @@ msgid "" "for." msgstr "" -#: ../source/specifications/simple-repository-api.rst:772 +#: ../source/specifications/simple-repository-api.rst:791 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 " @@ -22613,22 +22914,22 @@ msgid "" "collector.py#L123-L150>`_ so the risks for actual breakages is low." msgstr "" -#: ../source/specifications/simple-repository-api.rst:779 +#: ../source/specifications/simple-repository-api.rst:798 msgid "An example of how a client can operate would look like:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:830 +#: ../source/specifications/simple-repository-api.rst:849 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:836 +#: ../source/specifications/simple-repository-api.rst:855 msgid "Alternative Negotiation Mechanisms" msgstr "" -#: ../source/specifications/simple-repository-api.rst:838 +#: ../source/specifications/simple-repository-api.rst:857 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 " @@ -22637,25 +22938,25 @@ msgid "" "negotiation mechanisms that may *optionally* be used instead." msgstr "" -#: ../source/specifications/simple-repository-api.rst:846 +#: ../source/specifications/simple-repository-api.rst:865 msgid "URL Parameter" msgstr "" -#: ../source/specifications/simple-repository-api.rst:848 +#: ../source/specifications/simple-repository-api.rst:867 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:851 +#: ../source/specifications/simple-repository-api.rst:870 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:855 +#: ../source/specifications/simple-repository-api.rst:874 msgid "" "Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " "for interacting with the API. This negotiation mechanism is intended to " @@ -22663,13 +22964,13 @@ msgid "" "allow documentation or notes to link to a specific version+format." msgstr "" -#: ../source/specifications/simple-repository-api.rst:860 +#: ../source/specifications/simple-repository-api.rst:879 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:863 +#: ../source/specifications/simple-repository-api.rst:882 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 " @@ -22679,18 +22980,18 @@ msgid "" "``303 Multiple Choices``, or selecting a default type to return)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:872 +#: ../source/specifications/simple-repository-api.rst:891 msgid "Endpoint Configuration" msgstr "" -#: ../source/specifications/simple-repository-api.rst:874 +#: ../source/specifications/simple-repository-api.rst:893 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:878 +#: ../source/specifications/simple-repository-api.rst:897 msgid "" "If a server is unwilling or unable to implement the server-driven content " "negotiation, and would instead rather require users to explicitly configure " @@ -22698,7 +22999,7 @@ msgid "" "configuration." msgstr "" -#: ../source/specifications/simple-repository-api.rst:882 +#: ../source/specifications/simple-repository-api.rst:901 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 " @@ -22708,7 +23009,7 @@ msgid "" "and return the content type that corresponds to that endpoint." msgstr "" -#: ../source/specifications/simple-repository-api.rst:889 +#: ../source/specifications/simple-repository-api.rst:908 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 " @@ -22716,11 +23017,11 @@ msgid "" "includes the correct content type." msgstr "" -#: ../source/specifications/simple-repository-api.rst:896 +#: ../source/specifications/simple-repository-api.rst:915 msgid "TUF Support - PEP 458" msgstr "" -#: ../source/specifications/simple-repository-api.rst:898 +#: ../source/specifications/simple-repository-api.rst:917 msgid "" ":pep:`458` requires that all API responses are hashable and that they can be " "uniquely identified by a path relative to the repository root. For a Simple " @@ -22731,7 +23032,7 @@ msgid "" "that all hash differently." msgstr "" -#: ../source/specifications/simple-repository-api.rst:905 +#: ../source/specifications/simple-repository-api.rst:924 msgid "" ":pep:`458` does not specify what the target path should be for the Simple " "API, but TUF requires that the target paths be \"file-like\", in other " @@ -22739,7 +23040,7 @@ msgid "" "technically points to a directory." msgstr "" -#: ../source/specifications/simple-repository-api.rst:910 +#: ../source/specifications/simple-repository-api.rst:929 msgid "" "The saving grace is that the target path does not *have* to actually match " "the URL being fetched from the Simple API, and it can just be a sigil that " @@ -22748,7 +23049,7 @@ msgid "" "HTTP request, such as the ``Accept`` header." msgstr "" -#: ../source/specifications/simple-repository-api.rst:916 +#: ../source/specifications/simple-repository-api.rst:935 msgid "" "Ultimately figuring out how to map a directory to a filename is out of scope " "for this spec (but it would be in scope for :pep:`458`), and this spec " @@ -22756,7 +23057,7 @@ msgid "" "`458` metadata." msgstr "" -#: ../source/specifications/simple-repository-api.rst:920 +#: ../source/specifications/simple-repository-api.rst:939 msgid "" "However, it appears that the current WIP branch against pip that attempts to " "implement :pep:`458` is using a target path like ``simple/PROJECT/index." @@ -22766,20 +23067,20 @@ msgid "" "the v1 JSON format would be ``simple/PROJECT/vnd.pypi.simple.v1.json``." msgstr "" -#: ../source/specifications/simple-repository-api.rst:927 +#: ../source/specifications/simple-repository-api.rst:946 msgid "" "In this case, since ``text/html`` is an alias to ``application/vnd.pypi." "simple.v1+html`` when interacting through TUF, it likely will make the most " "sense to normalize to the more explicit name." msgstr "" -#: ../source/specifications/simple-repository-api.rst:931 +#: ../source/specifications/simple-repository-api.rst:950 msgid "" "Likewise the ``latest`` metaversion should not be included in the targets, " "only explicitly declared versions should be supported." msgstr "" -#: ../source/specifications/simple-repository-api.rst:937 +#: ../source/specifications/simple-repository-api.rst:956 msgid "" "This section is non-normative, and represents what the spec authors believe " "to be the best default implementation decisions for something implementing " @@ -22787,7 +23088,7 @@ msgid "" "these decisions." msgstr "" -#: ../source/specifications/simple-repository-api.rst:941 +#: ../source/specifications/simple-repository-api.rst:960 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 " @@ -22796,18 +23097,18 @@ msgid "" "choices it can." msgstr "" -#: ../source/specifications/simple-repository-api.rst:946 +#: ../source/specifications/simple-repository-api.rst:965 msgid "It is recommended that servers:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:948 +#: ../source/specifications/simple-repository-api.rst:967 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:952 +#: ../source/specifications/simple-repository-api.rst:971 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 " @@ -22815,13 +23116,13 @@ msgid "" "Acceptable`` response." msgstr "" -#: ../source/specifications/simple-repository-api.rst:957 +#: ../source/specifications/simple-repository-api.rst:976 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:960 +#: ../source/specifications/simple-repository-api.rst:979 msgid "" "When selecting an acceptable version, the server should choose the highest " "version that the client supports, with the most expressive/featureful " @@ -22830,23 +23131,23 @@ msgid "" "should only use the ``text/html`` content type as a last resort." msgstr "" -#: ../source/specifications/simple-repository-api.rst:966 +#: ../source/specifications/simple-repository-api.rst:985 msgid "It is recommended that clients:" msgstr "" -#: ../source/specifications/simple-repository-api.rst:968 +#: ../source/specifications/simple-repository-api.rst:987 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:971 +#: ../source/specifications/simple-repository-api.rst:990 msgid "" "When constructing an ``Accept`` header, include all of the content types " "that you support." msgstr "" -#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/simple-repository-api.rst:993 msgid "" "You should generally *not* include a quality priority value for your content " "types, unless you have implementation specific reasons that you want the " @@ -22855,73 +23156,84 @@ msgid "" "responses that you're unable to parse in some edge cases)." msgstr "" -#: ../source/specifications/simple-repository-api.rst:980 +#: ../source/specifications/simple-repository-api.rst:999 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:984 +#: ../source/specifications/simple-repository-api.rst:1003 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:987 +#: ../source/specifications/simple-repository-api.rst:1006 msgid "" "Check the ``Content-Type`` of the response and ensure it matches something " "that you were expecting." msgstr "" -#: ../source/specifications/simple-repository-api.rst:995 +#: ../source/specifications/simple-repository-api.rst:1014 msgid "September 2015: initial form of the HTML format, in :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:996 +#: ../source/specifications/simple-repository-api.rst:1015 msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:997 +#: ../source/specifications/simple-repository-api.rst:1016 msgid "May 2019: \"yank\" support, in :pep:`592`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:998 +#: ../source/specifications/simple-repository-api.rst:1017 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:1000 +#: ../source/specifications/simple-repository-api.rst:1019 msgid "" "May 2021: providing package metadata independently from a package, in :pep:" "`658`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1002 +#: ../source/specifications/simple-repository-api.rst:1021 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:1004 +#: ../source/specifications/simple-repository-api.rst:1023 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:1006 +#: ../source/specifications/simple-repository-api.rst:1025 msgid "" "June 2023: renaming the field which provides package metadata independently " "from a package, in :pep:`714`" msgstr "" -#: ../source/specifications/simple-repository-api.rst:1008 +#: ../source/specifications/simple-repository-api.rst:1027 msgid "" "November 2024: provenance metadata in the HTML and JSON formats, in :pep:" "`740`" msgstr "" +#: ../source/specifications/simple-repository-api.rst:1028 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:1029 +msgid "" +"July 2025: layout changes (dedicated page for file yanking, introduce " +"concepts before API details)" +msgstr "" + #: ../source/specifications/source-distribution-format.rst:6 msgid "Source distribution format" msgstr "" @@ -25937,6 +26249,13 @@ msgid "" "a ``pip``-installable Python package." msgstr "" +#: ../source/tutorials/managing-dependencies.rst:180 +msgid "" +"`uv `__ for a single tool that covers the entire " +"project management workflow, including dependency management, packaging, and " +"publishing." +msgstr "" + #: ../source/tutorials/packaging-projects.rst:2 msgid "Packaging Python Projects" msgstr "" @@ -26477,6 +26796,11 @@ msgid "" "the file is empty)." msgstr "" +#, fuzzy +#~| msgid "Project name" +#~ msgid "**Inspiration**: :ref:` pyproject-tool-table`" +#~ msgstr "專案名稱" + #~ msgid "List keywords that describe your project." #~ msgstr "列出描述您的項目的關鍵字。"